aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@FreeBSD.org>2009-04-17 01:02:56 +0000
committerTim Kientzle <kientzle@FreeBSD.org>2009-04-17 01:02:56 +0000
commitc190973e9dab0ff3c63c9d177f7218e5b83ea033 (patch)
tree4ef4b868debf249afac0887b803cd414f77c4cba /lib
parent7ea8a85dbceef81419c7accce8cf8d58db004a6a (diff)
Notes
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive_read_support_format_mtree.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/libarchive/archive_read_support_format_mtree.c b/lib/libarchive/archive_read_support_format_mtree.c
index 3a586200657a..ba65ce0b2146 100644
--- a/lib/libarchive/archive_read_support_format_mtree.c
+++ b/lib/libarchive/archive_read_support_format_mtree.c
@@ -404,10 +404,13 @@ read_mtree(struct archive_read *a, struct mtree *mtree)
len = readline(a, mtree, &p, 256);
if (len == 0) {
mtree->this_entry = mtree->entries;
+ free_options(global);
return (ARCHIVE_OK);
}
- if (len < 0)
+ if (len < 0) {
+ free_options(global);
return (len);
+ }
/* Leading whitespace is never significant, ignore it. */
while (*p == ' ' || *p == '\t') {
++p;
@@ -432,13 +435,16 @@ read_mtree(struct archive_read *a, struct mtree *mtree)
} else
break;
- if (r != ARCHIVE_OK)
+ if (r != ARCHIVE_OK) {
+ free_options(global);
return r;
+ }
}
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Can't parse line %ju", counter);
- return ARCHIVE_FATAL;
+ free_options(global);
+ return (ARCHIVE_FATAL);
}
/*