projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote branch 'origin/master' into import-gui
[pspp]
/
src
/
libpspp
/
zip-reader.c
diff --git
a/src/libpspp/zip-reader.c
b/src/libpspp/zip-reader.c
index 4672a1079f96ae12367670c7a1d4a760425c251b..985b0a9027723180f6362d430ad66e9b8f49c045 100644
(file)
--- a/
src/libpspp/zip-reader.c
+++ b/
src/libpspp/zip-reader.c
@@
-275,7
+275,7
@@
zip_header_read_next (struct zip_reader *zr)
get_u32 (zr->fr, &eattr);
get_u32 (zr->fr, &zm->offset);
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);
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;
off_t offset = 0;
uint32_t central_dir_start, central_dir_length;
- struct zip_reader *zr =
m
alloc (sizeof *zr);
+ struct zip_reader *zr =
xz
alloc (sizeof *zr);
zr->errs = errs;
if ( zr->errs)
ds_init_empty (zr->errs);
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;
}
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);
zr->filename = strdup (filename);
@@
-390,17
+391,16
@@
zip_member_open (struct zip_reader *zr, const char *member)
if ( zr == NULL)
return NULL;
if ( zr == NULL)
return NULL;
- for (i = 0
; i < zr->n_members; ++i)
+ for (i = 0; i < zr->n_members; ++i)
{
{
- zm = zr->members[i] = zip_header_read_next (zr);
+ zm = zr->members[i];
+
+ if (zm == NULL)
+ zm = zr->members[i] = zip_header_read_next (zr);
if (zm && 0 == strcmp (zm->name, member))
if (zm && 0 == strcmp (zm->name, member))
- {
- break;
- }
+ break;
else
else
- {
- zm = NULL;
- }
+ zm = NULL;
}
if ( zm == NULL)
}
if ( zm == NULL)
@@
-431,7
+431,7
@@
zip_member_open (struct zip_reader *zr, const char *member)
get_u16 (zm->fp, &nlen);
get_u16 (zm->fp, &extra_len);
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);
get_bytes (zm->fp, name, nlen);