From 6f1031326e60eae1a3db7dbb394fa5438f908b83 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Fri, 1 Jun 2007 12:14:34 +0000 Subject: [PATCH] (x_encode_text): Add GCPRO. (x_set_name_internal): Separate USE_GTK and non-USE_GTK cases. --- src/xfns.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/xfns.c b/src/xfns.c index 73a88dfc058..ae8ef659728 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -1516,6 +1516,8 @@ x_set_scroll_bar_background (f, value, oldval) /* Encode Lisp string STRING as a text in a format appropriate for XICCC (X Inter Client Communication Conventions). + This can call Lisp code, so callers must GCPRO. + If STRING contains only ASCII characters, do no conversion and return the string data of STRING. Otherwise, encode the text by CODING_SYSTEM, and return a newly allocated memory area which @@ -1563,7 +1565,11 @@ x_encode_text (string, coding_system, selectionp, text_bytes, stringp, freep) && SYMBOLP (coding.pre_write_conversion) && !NILP (Ffboundp (coding.pre_write_conversion))) { + struct gcpro gcpro1; + /* We don't need to GCPRO string. */ + GCPRO1 (coding_system); string = run_pre_post_conversion_on_str (string, &coding, 1); + UNGCPRO; str = SDATA (string); chars = SCHARS (string); bytes = SBYTES (string); @@ -1601,22 +1607,20 @@ x_set_name_internal (f, name) BLOCK_INPUT; #ifdef HAVE_X11R4 { - XTextProperty text, icon; - 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 + gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), + (char *) SDATA (encoded_name)); +#else /* not USE_GTK */ + XTextProperty text, icon; + int bytes, stringp; + int do_free_icon_value = 0, do_free_text_value = 0; + Lisp_Object coding_system; coding_system = Qcompound_text; + /* Note: Encoding strategy We encode NAME by compound-text and use "COMPOUND-TEXT" in @@ -1653,12 +1657,7 @@ x_set_name_internal (f, name) icon.nitems = bytes; } -#ifdef USE_GTK - gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), - (char *) SDATA (encoded_name)); -#else /* not USE_GTK */ XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text); -#endif /* not USE_GTK */ XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &icon); @@ -1666,6 +1665,7 @@ x_set_name_internal (f, name) xfree (icon.value); if (do_free_text_value) xfree (text.value); +#endif /* not USE_GTK */ } #else /* not HAVE_X11R4 */ XSetIconName (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), -- 2.39.5