budb: Store dumper information correctly
[openafs.git] / src / budb / procs.c
index 9258121..d3d8283 100644 (file)
@@ -346,7 +346,7 @@ FreeReturnList(struct returnList *list)
 static afs_int32
 AddToReturnList(struct returnList *list, dbadr a, afs_int32 *to_skipP)
 {
-    char *tmp;
+    dbadr *tmp;
     afs_int32 size;
 
     if (a == 0)
@@ -365,14 +365,14 @@ AddToReturnList(struct returnList *list, dbadr a, afs_int32 *to_skipP)
     if (list->nElements >= list->allocSize) {
        if (list->elements == 0) {
            size = 10;
-           tmp = (char *)malloc(sizeof(dbadr) * size);
+           tmp = malloc(sizeof(dbadr) * size);
        } else {
            size = list->allocSize + 10;
-           tmp = (char *)realloc(list->elements, sizeof(dbadr) * size);
+           tmp = realloc(list->elements, sizeof(dbadr) * size);
        }
        if (!tmp)
            return BUDB_NOMEM;
-       list->elements = (dbadr *) tmp;
+       list->elements = tmp;
        list->allocSize = size;
     }
 
@@ -534,9 +534,12 @@ SendReturnList(struct ubik_trans *ut,
 
     /* Allocate space for the return values if needed and zero it */
     if (eList->budb_dumpList_val == 0) {
-       eList->budb_dumpList_val = calloc(to_return, e_size);
-       if (!eList->budb_dumpList_val)
-           return (BUDB_NOMEM);
+       if (to_return > 0) {
+           eList->budb_dumpList_val = calloc(to_return, e_size);
+           if (!eList->budb_dumpList_val)
+               return (BUDB_NOMEM);
+       } else
+           eList->budb_dumpList_val = NULL;
     } else {
         memset(eList->budb_dumpList_val, 0, e_size * to_return);
     }
@@ -939,13 +942,12 @@ deleteDump(struct rx_call *call, dumpId id, budb_dumpsList *dumps)
        /* Record the dump just deleted */
        if (dumps && (dumps->budb_dumpsList_len < BUDB_MAX_RETURN_LIST)) {
            if (dumps->budb_dumpsList_len == 0)
-               dumps->budb_dumpsList_val =
-                   (afs_int32 *) malloc(sizeof(afs_int32));
+               dumps->budb_dumpsList_val = malloc(sizeof(afs_int32));
            else
                dumps->budb_dumpsList_val =
-                   (afs_int32 *) realloc(dumps->budb_dumpsList_val,
-                                         (dumps->budb_dumpsList_len +
-                                          1) * sizeof(afs_int32));
+                   realloc(dumps->budb_dumpsList_val,
+                           (dumps->budb_dumpsList_len + 1)
+                            * sizeof(afs_int32));
 
            if (!dumps->budb_dumpsList_val)
                ABORT(BUDB_NOMEM);
@@ -1474,7 +1476,7 @@ CreateDump(struct rx_call *call, struct budb_dumpEntry *dump)
        dump->created = dump->id;
     d.created = htonl(dump->created);
 
-    principal = d.dumper;
+    d.dumper = principal;
     tapeSet_hton(&dump->tapes, &d.tapes);
 
     d.flags = htonl(dump->flags | BUDB_DUMP_INPROGRESS);
@@ -1630,22 +1632,16 @@ ListDumps(struct rx_call *call, afs_int32 sflags, afs_int32 groupid,
                        count += 10;
                        if (count == 10) {
                            dumps->budb_dumpsList_val =
-                               (afs_int32 *) malloc(count *
-                                                    sizeof(afs_int32));
+                               malloc(count * sizeof(afs_int32));
                            flags->budb_dumpsList_val =
-                               (afs_int32 *) malloc(count *
-                                                    sizeof(afs_int32));
+                               malloc(count * sizeof(afs_int32));
                        } else {
                            dumps->budb_dumpsList_val =
-                               (afs_int32 *) realloc(dumps->
-                                                     budb_dumpsList_val,
-                                                     count *
-                                                     sizeof(afs_int32));
+                               realloc(dumps->budb_dumpsList_val,
+                                       count * sizeof(afs_int32));
                            flags->budb_dumpsList_val =
-                               (afs_int32 *) realloc(flags->
-                                                     budb_dumpsList_val,
-                                                     count *
-                                                     sizeof(afs_int32));
+                               realloc(flags->budb_dumpsList_val,
+                                       count * sizeof(afs_int32));
                        }
                        if (!dumps->budb_dumpsList_val
                            || !dumps->budb_dumpsList_val)