diff --git a/src/incremen.c b/src/incremen.c index ca611f65..7c26eb80 100644 --- a/src/incremen.c +++ b/src/incremen.c @@ -915,6 +915,7 @@ store_rename (struct directory *dir, struct obstack *stk) obstack_code_rename (stk, p->orig->name, p->name); obstack_code_rename (stk, "", prev->name); + free (temp_name); } } } diff --git a/src/transform.c b/src/transform.c index 3fae3c0d..6ef0da6d 100644 --- a/src/transform.c +++ b/src/transform.c @@ -101,7 +101,7 @@ add_segment (struct transform *tf) } static void -add_literal_segment (struct transform *tf, char *str, char *end) +add_literal_segment (struct transform *tf, const char *str, const char *end) { size_t len = end - str; if (len) @@ -403,6 +403,7 @@ parse_transform_expr (const char *expr) cur++; } add_literal_segment (tf, beg, cur); + free(str); return p; } diff --git a/src/utf8.c b/src/utf8.c index a018ce0a..168d636c 100644 --- a/src/utf8.c +++ b/src/utf8.c @@ -68,7 +68,6 @@ utf8_convert (bool to_utf, char const *input, char **output) char *ob; size_t inlen; size_t outlen; - size_t rc; iconv_t cd = utf8_init (to_utf); if (cd == 0) @@ -83,9 +82,13 @@ utf8_convert (bool to_utf, char const *input, char **output) outlen = inlen * MB_LEN_MAX + 1; ob = *output = xmalloc (outlen); ib = (char ICONV_CONST *) input; - rc = iconv (cd, &ib, &inlen, &ob, &outlen); + if (iconv (cd, &ib, &inlen, &ob, &outlen) == -1) + { + free (*output); + return false; + } *ob = 0; - return rc != -1; + return true; }