From df6304968670f3ead5a22d833b0442b9288d1ec7 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Mon, 12 Sep 2005 10:27:20 +0000 Subject: [PATCH] (x_encode_text): Declare static. Add FREEP arg. (x_set_name_internal): Call x_encode_text with new FREEP arg to know if xfree is needed instead of guessing. --- src/xfns.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/xfns.c b/src/xfns.c index 0bcf458b042..a0f6f3b3743 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -1515,11 +1515,12 @@ x_set_scroll_bar_background (f, value, oldval) Otherwise store 0 in *STRINGP, which means that the `encoding' of the result should be `COMPOUND_TEXT'. */ -unsigned char * -x_encode_text (string, coding_system, selectionp, text_bytes, stringp) +static unsigned char * +x_encode_text (string, coding_system, selectionp, text_bytes, stringp, freep) Lisp_Object string, coding_system; int *text_bytes, *stringp; int selectionp; + int *freep; { unsigned char *str = SDATA (string); int chars = SCHARS (string); @@ -1536,6 +1537,7 @@ x_encode_text (string, coding_system, selectionp, text_bytes, stringp) /* No multibyte character in OBJ. We need not encode it. */ *text_bytes = bytes; *stringp = 1; + *freep = 0; return str; } @@ -1563,6 +1565,7 @@ x_encode_text (string, coding_system, selectionp, text_bytes, stringp) *stringp = (charset_info == 1 || (!EQ (coding_system, Qcompound_text) && !EQ (coding_system, Qcompound_text_with_extensions))); + *freep = 1; return buf; } @@ -1601,16 +1604,13 @@ x_set_name_internal (f, name) in the future which can encode all Unicode characters. But, for the moment, there's no way to know that the current window manager supports it or not. */ - text.value = x_encode_text (name, coding_system, 0, &bytes, &stringp); + text.value = x_encode_text (name, coding_system, 0, &bytes, &stringp, + &do_free_text_value); text.encoding = (stringp ? XA_STRING : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT); text.format = 8; text.nitems = bytes; - /* Check early, because ENCODE_UTF_8 below may GC and name may be - relocated. */ - do_free_text_value = text.value != SDATA (name); - if (NILP (f->icon_name)) { icon = text; @@ -1619,12 +1619,11 @@ x_set_name_internal (f, name) { /* See the above comment "Note: Encoding strategy". */ icon.value = x_encode_text (f->icon_name, coding_system, 0, - &bytes, &stringp); + &bytes, &stringp, &do_free_icon_value); icon.encoding = (stringp ? XA_STRING : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT); icon.format = 8; icon.nitems = bytes; - do_free_icon_value = icon.value != SDATA (f->icon_name); } #ifdef USE_GTK @@ -1987,7 +1986,7 @@ xic_create_fontsetname (base_fontname, motif) - the same but with the family also replaced with -*-*-. */ char *p = base_fontname; int i; - + for (i = 0; *p; p++) if (*p == '-') i++; if (i != 14) @@ -2011,7 +2010,7 @@ xic_create_fontsetname (base_fontname, motif) char *allcs = "*-*-*-*-*-*-*"; char *allfamilies = "-*-*-"; char *all = "*-*-*-*-"; - + for (i = 0, p = base_fontname; i < 8; p++) { if (*p == '-') -- 2.39.2