summaryrefslogtreecommitdiff
path: root/pango/pango-layout.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r--pango/pango-layout.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 6cef2677..4e030ff8 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);
}
/**