utf8: release strbuf on error return in strbuf_utf8_replace()
Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
460c7eb2bf
commit
9a012bf32a
3
utf8.c
3
utf8.c
@ -381,7 +381,7 @@ void strbuf_utf8_replace(struct strbuf *sb_src, int pos, int width,
|
|||||||
old = src;
|
old = src;
|
||||||
n = utf8_width((const char**)&src, NULL);
|
n = utf8_width((const char**)&src, NULL);
|
||||||
if (!src) /* broken utf-8, do nothing */
|
if (!src) /* broken utf-8, do nothing */
|
||||||
return;
|
goto out;
|
||||||
if (n && w >= pos && w < pos + width) {
|
if (n && w >= pos && w < pos + width) {
|
||||||
if (subst) {
|
if (subst) {
|
||||||
memcpy(dst, subst, subst_len);
|
memcpy(dst, subst, subst_len);
|
||||||
@ -397,6 +397,7 @@ void strbuf_utf8_replace(struct strbuf *sb_src, int pos, int width,
|
|||||||
}
|
}
|
||||||
strbuf_setlen(&sb_dst, dst - sb_dst.buf);
|
strbuf_setlen(&sb_dst, dst - sb_dst.buf);
|
||||||
strbuf_swap(sb_src, &sb_dst);
|
strbuf_swap(sb_src, &sb_dst);
|
||||||
|
out:
|
||||||
strbuf_release(&sb_dst);
|
strbuf_release(&sb_dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user