summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorHilko Bengen <bengen@hilluzination.de>2010-07-12 14:50:31 +0100
committerRichard Jones <rjones@redhat.com>2010-07-12 14:51:22 +0100
commit374659033e8eeea5b25246a9ef80bee3ebc2cde9 (patch)
tree6b735fdaf17aba05c2541e693aebce34d6d4f421 /lib
parentc94240fad3f6bc1befc1c7ba6de253555a58dce3 (diff)
downloadhivex-374659033e8eeea5b25246a9ef80bee3ebc2cde9.tar.gz
hivex-374659033e8eeea5b25246a9ef80bee3ebc2cde9.tar.xz
hivex-374659033e8eeea5b25246a9ef80bee3ebc2cde9.zip
Call iconv_close along error path out of function.
Diffstat (limited to 'lib')
-rw-r--r--lib/hivex.c6
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 {