From: Ben Pfaff Date: Tue, 21 Sep 2010 04:50:21 +0000 (-0700) Subject: i18n: Avoid memory leak when create_iconv() fails. X-Git-Tag: sav-api~30 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=b042e2bf98b0e320ee55213252bac1a0260fafc3 i18n: Avoid memory leak when create_iconv() fails. --- diff --git a/src/libpspp/i18n.c b/src/libpspp/i18n.c index eb082c5d94..3735e95d84 100644 --- a/src/libpspp/i18n.c +++ b/src/libpspp/i18n.c @@ -137,6 +137,11 @@ recode_string_pool (const char *to, const char *from, if (from == NULL) from = default_encoding; + conv = create_iconv (to, from); + + if ( (iconv_t) -1 == conv ) + return xstrdup (text); + for ( outbufferlength = 1 ; outbufferlength != 0; outbufferlength <<= 1 ) if ( outbufferlength > length) break; @@ -148,11 +153,6 @@ recode_string_pool (const char *to, const char *from, inbytes = length; - conv = create_iconv (to, from); - - if ( (iconv_t) -1 == conv ) - return xstrdup (text); - do { const char *ip = text; result = iconv (conv, (ICONV_CONST char **) &text, &inbytes,