Avoid some resource leaks
* src/incremen.c (store_rename): Free temp_name, leaked before for each renamed directory with --listed-incremental. * src/transform.c (add_literal_segment): Tighten arguments by const. (parse_transform_expr): Free 'str', leaked storage for each --transform option before. * src/utf8.c (utf8_convert): Deallocate buffer for failed iconv() call so callers don't have to.
This commit is contained in:
committed by
Sergey Poznyakoff
parent
c7b3f0217f
commit
577dc34565
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user