Merge remote branch 'origin/master' into import-gui
authorJohn Darrington <john@darrington.wattle.id.au>
Thu, 7 Mar 2013 12:16:41 +0000 (13:16 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Thu, 7 Mar 2013 12:16:41 +0000 (13:16 +0100)
src/libpspp/zip-reader.c
tests/libpspp/zip-test.c

index 59c47bc97507e78d6e716c46288458d796a8eb53..985b0a9027723180f6362d430ad66e9b8f49c045 100644 (file)
@@ -275,7 +275,7 @@ zip_header_read_next (struct zip_reader *zr)
   get_u32 (zr->fr, &eattr);
   get_u32 (zr->fr, &zm->offset);
 
-  zm->name = calloc (nlen + 1, 1);
+  zm->name = xzalloc (nlen + 1);
   get_bytes (zr->fr, zm->name, nlen);
 
   skip_bytes (zr->fr, extralen);
@@ -298,7 +298,7 @@ zip_reader_create (const char *filename, struct string *errs)
   off_t offset = 0;
   uint32_t central_dir_start, central_dir_length;
 
-  struct zip_reader *zr = malloc (sizeof *zr);
+  struct zip_reader *zr = xzalloc (sizeof *zr);
   zr->errs = errs;
   if ( zr->errs)
     ds_init_empty (zr->errs);
@@ -363,7 +363,8 @@ zip_reader_create (const char *filename, struct string *errs)
       return NULL;
     }
 
-  zr->members = calloc (zr->n_members, sizeof (*zr->members));
+  zr->members = xcalloc (zr->n_members, sizeof (*zr->members));
+  memset (zr->members, 0, zr->n_members * sizeof (*zr->members));
 
   zr->filename = strdup (filename);
 
@@ -393,6 +394,7 @@ zip_member_open (struct zip_reader *zr, const char *member)
   for (i = 0; i < zr->n_members; ++i)
   {
     zm = zr->members[i];
+
     if (zm == NULL)
       zm = zr->members[i] = zip_header_read_next (zr);
     if (zm && 0 == strcmp (zm->name, member))
@@ -429,7 +431,7 @@ zip_member_open (struct zip_reader *zr, const char *member)
   get_u16 (zm->fp, &nlen);
   get_u16 (zm->fp, &extra_len);
 
-  name = calloc (nlen + 1, sizeof (char));
+  name = xzalloc (nlen + 1);
 
   get_bytes (zm->fp, name, nlen);
 
index ab55c11070dda1fbf747495092f40e44a1ec954a..eded13e8bf67dccefeab4a547776716c96807c13 100644 (file)
@@ -102,8 +102,6 @@ main (int argc, char **argv)
              fprintf (stderr, "Unzip failed: %s\n", ds_cstr (&str));
              check_die ();
            }
-         
-         zip_member_unref (zm);
        }
       zip_reader_destroy (zr);
     }