diff options
author | Owen Taylor <otaylor@redhat.com> | 2003-02-12 21:55:31 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2003-02-12 21:55:31 +0000 |
commit | fc348336e2ec8b2fbecdf9939ef85585ce92c19e (patch) | |
tree | 867b198a9452834446af7ca92c00d0261a576cbb /pango | |
parent | fce6f1cace072d448880dbbfcf39cbef237ef58a (diff) | |
download | pango-fc348336e2ec8b2fbecdf9939ef85585ce92c19e.tar.gz |
Guard against pango_layout_set_text (pango_layout_get_text (layout));
Wed Feb 12 16:48:46 2003 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_set_text):
Guard against
pango_layout_set_text (pango_layout_get_text (layout));
(#105612, Morten Welinder)
Diffstat (limited to 'pango')
-rw-r--r-- | pango/pango-layout.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 2df1cbbb..a2234189 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -722,11 +722,14 @@ pango_layout_set_text (PangoLayout *layout, const char *text, int length) { - const gchar *end; + const char *end; + char *old_text; g_return_if_fail (layout != NULL); g_return_if_fail (length == 0 || text != NULL); + old_text = layout->text; + if (length != 0) { if (!g_utf8_validate (text, length, &end)) @@ -735,9 +738,6 @@ pango_layout_set_text (PangoLayout *layout, length = end - text; } - if (layout->text) - g_free (layout->text); - /* NULL-terminate the text for convenience. */ layout->text = g_malloc (length + 1); @@ -748,6 +748,9 @@ pango_layout_set_text (PangoLayout *layout, layout->length = length; pango_layout_clear_lines (layout); + + if (old_text) + g_free (old_text); } /** |