From fc4deba1edb1310028d00bf6eb3217378e1cc713 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Mon, 18 Feb 2013 09:35:53 +0100 Subject: [PATCH] Zip Reader: Take members from the index if they exist. This allows readers to be iterated more than once. --- src/libpspp/zip-reader.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/libpspp/zip-reader.c b/src/libpspp/zip-reader.c index 4672a1079f..59c47bc975 100644 --- a/src/libpspp/zip-reader.c +++ b/src/libpspp/zip-reader.c @@ -390,17 +390,15 @@ zip_member_open (struct zip_reader *zr, const char *member) 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)) - { - break; - } + break; else - { - zm = NULL; - } + zm = NULL; } if ( zm == NULL) -- 2.30.2