]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_encode_text): Declare static. Add FREEP arg.
authorKim F. Storm <storm@cua.dk>
Mon, 12 Sep 2005 10:27:20 +0000 (10:27 +0000)
committerKim F. Storm <storm@cua.dk>
Mon, 12 Sep 2005 10:27:20 +0000 (10:27 +0000)
(x_set_name_internal): Call x_encode_text with new FREEP arg to
know if xfree is needed instead of guessing.

src/xfns.c

index 0bcf458b04291d07396c3a650f774701da556a1c..a0f6f3b37435ebc25fafdd50bf9e7ef551296035 100644 (file)
@@ -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 == '-')