]> git.eshelyaron.com Git - emacs.git/commitdiff
(STRING_SET_UNIBYTE): Return the canonical empty unibyte string, if appropriate.
authorJuanma Barranquero <lekktu@gmail.com>
Fri, 8 Jun 2007 19:56:24 +0000 (19:56 +0000)
committerJuanma Barranquero <lekktu@gmail.com>
Fri, 8 Jun 2007 19:56:24 +0000 (19:56 +0000)
(empty_unibyte_string, empty_multibyte_string): New externs.
(empty_string): Remove extern.

src/lisp.h

index a7072d02174488b874c95b4feeeb3e3efe9f6faf..d380ba0d049bf485eb70b19341b312d2c2f999e8 100644 (file)
@@ -701,7 +701,10 @@ extern int string_bytes P_ ((struct Lisp_String *));
 #endif /* not GC_CHECK_STRING_BYTES */
 
 /* Mark STR as a unibyte string.  */
-#define STRING_SET_UNIBYTE(STR)      (XSTRING (STR)->size_byte = -1)
+#define STRING_SET_UNIBYTE(STR)  \
+  do { if (EQ (STR, empty_multibyte_string))  \
+      (STR) = empty_unibyte_string;  \
+    else XSTRING (STR)->size_byte = -1; } while (0)
 
 /* Get text properties.  */
 #define STRING_INTERVALS(STR)  (XSTRING (STR)->intervals + 0)
@@ -3060,7 +3063,8 @@ extern void syms_of_frame P_ ((void));
 /* defined in emacs.c */
 extern Lisp_Object decode_env_path P_ ((char *, char *));
 extern Lisp_Object Vinvocation_name, Vinvocation_directory;
-extern Lisp_Object Vinstallation_directory, empty_string;
+extern Lisp_Object Vinstallation_directory;
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
 EXFUN (Fkill_emacs, 1);
 #if HAVE_SETLOCALE
 void fixup_locale P_ ((void));