summaryrefslogtreecommitdiff
path: root/ext/zip/php_zip.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/zip/php_zip.c')
-rw-r--r--ext/zip/php_zip.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c
index d7bd5f49e6..1f435bbb00 100644
--- a/ext/zip/php_zip.c
+++ b/ext/zip/php_zip.c
@@ -102,14 +102,14 @@ static char * php_zip_make_relative_path(char *path, int path_len) /* {{{ */
char *path_begin = path;
size_t i;
- if (IS_SLASH(path[0])) {
- return path + 1;
- }
-
if (path_len < 1 || path == NULL) {
return NULL;
}
+ if (IS_SLASH(path[0])) {
+ return path + 1;
+ }
+
i = path_len;
while (1) {
@@ -1856,15 +1856,16 @@ static ZIPARCHIVE_METHOD(addFromString)
/* TODO: fix _zip_replace */
if (cur_idx >= 0) {
if (zip_delete(intern, cur_idx) == -1) {
- RETURN_FALSE;
+ goto fail;
}
}
- if (zip_add(intern, name, zs) == -1) {
- RETURN_FALSE;
- } else {
+ if (zip_add(intern, name, zs) != -1) {
RETURN_TRUE;
}
+fail:
+ zip_source_free(zs);
+ RETURN_FALSE;
}
/* }}} */