summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2007-06-01 03:58:05 +0000
committerChong Yidong <cyd@stupidchicken.com>2007-06-01 03:58:05 +0000
commit67cae4883e8850079fa642c9b2387c8786e3140b (patch)
tree3722d6c00211590154d9c861fc5d296905dbdf95
parent8e45f1757d66593210a2a04f27ea43ea32f4127e (diff)
downloademacs-67cae4883e8850079fa642c9b2387c8786e3140b.tar.gz
(x_set_name_internal): Save encoded name before x_encode_text in case
string data is relocated.
-rw-r--r--src/xfns.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 03cbaaec8e2..73a88dfc058 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1605,6 +1605,16 @@ x_set_name_internal (f, name)
int bytes, stringp;
int do_free_icon_value = 0, do_free_text_value = 0;
Lisp_Object coding_system;
+#ifdef USE_GTK
+ Lisp_Object encoded_name;
+ struct gcpro gcpro1;
+
+ /* As ENCODE_UTF_8 may cause GC and relocation of string data,
+ we use it before x_encode_text that may return string data. */
+ GCPRO1 (name);
+ encoded_name = ENCODE_UTF_8 (name);
+ UNGCPRO;
+#endif
coding_system = Qcompound_text;
/* Note: Encoding strategy
@@ -1645,7 +1655,7 @@ x_set_name_internal (f, name)
#ifdef USE_GTK
gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
- (char *) SDATA (ENCODE_UTF_8 (name)));
+ (char *) SDATA (encoded_name));
#else /* not USE_GTK */
XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
#endif /* not USE_GTK */