[PATCH] utf8: NO_ICONV: silence uninitialized variable warning
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jun 5, 2015, 06:42 UTC
- Message-ID
- <1433486536-23447-1-git-send-email-sunshine@sunshineco.com>
The last argument of reencode_string_len() is an 'int *' which is assigned the length of the converted string. When NO_ICONV is defined, however, reencode_string_len() is stubbed out by the macro:
#define reencode_string_len(a,b,c,d,e) NULL
which never assigns a value to the final argument. When called like this:
int n;
char *s = reencode_string_len(..., &n);
if (s)
do_something(s, n);some compilers complain that 'n' is used uninitialized within the conditional.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> --- utf8.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/utf8.h b/utf8.h index e7b2aa4..5a9e94b 100644 --- a/utf8.h +++ b/utf8.h @@ -31,7 +31,9 @@ char *reencode_string_len(const char *in, int insz, const char *in_encoding, int *outsz); #else -#define reencode_string_len(a,b,c,d,e) NULL +static inline char *reencode_string_len(const char *a, int b, + const char *c, const char *d, int *e) +{ if (e) *e = 0; return NULL; } #endif static inline char *reencode_string(const char *in,
-- 2.4.2.613.g328fd50