]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_set_name_internal): Save encoded name before x_encode_text in case
authorChong Yidong <cyd@stupidchicken.com>
Fri, 1 Jun 2007 04:00:27 +0000 (04:00 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 1 Jun 2007 04:00:27 +0000 (04:00 +0000)
string data is relocated.

src/xfns.c

index 03cbaaec8e2f2e481bc5dc1eeeab0fea325c3ca6..73a88dfc0580affe603dce9fd90d4f68d5e8e108 100644 (file)
@@ -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 */