diff options
author | Hilko Bengen <bengen@hilluzination.de> | 2010-07-12 14:50:31 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2010-07-12 14:51:22 +0100 |
commit | 374659033e8eeea5b25246a9ef80bee3ebc2cde9 (patch) | |
tree | 6b735fdaf17aba05c2541e693aebce34d6d4f421 | |
parent | c94240fad3f6bc1befc1c7ba6de253555a58dce3 (diff) | |
download | hivex-374659033e8eeea5b25246a9ef80bee3ebc2cde9.tar.gz hivex-374659033e8eeea5b25246a9ef80bee3ebc2cde9.tar.xz hivex-374659033e8eeea5b25246a9ef80bee3ebc2cde9.zip |
Call iconv_close along error path out of function.
-rw-r--r-- | lib/hivex.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/hivex.c b/lib/hivex.c index c65f6de..2b22924 100644 --- a/lib/hivex.c +++ b/lib/hivex.c @@ -1275,12 +1275,16 @@ windows_utf16_to_utf8 (/* const */ char *input, size_t len) size_t r = iconv (ic, &inp, &inlen, &outp, &outlen); if (r == (size_t) -1) { if (errno == E2BIG) { + int err = errno; size_t prev = outalloc; /* Try again with a larger output buffer. */ free (out); outalloc *= 2; - if (outalloc < prev) + if (outalloc < prev) { + iconv_close (ic); + errno = err; return NULL; + } goto again; } else { |