diff src/file-coding.c @ 261:405dd6d1825b r20-5b29

Import from CVS: tag r20-5b29
author cvs
date Mon, 13 Aug 2007 10:23:51 +0200
parents 11cf20601dec
children 727739f917cb
line wrap: on
line diff
--- a/src/file-coding.c	Mon Aug 13 10:23:05 2007 +0200
+++ b/src/file-coding.c	Mon Aug 13 10:23:51 2007 +0200
@@ -360,9 +360,8 @@
   Lisp_Object codesys_obj = Qnil;
   int len = string_length (XSYMBOL (CODING_SYSTEM_NAME (codesys))->name);
   char *codesys_name = (char *) alloca (len + 7);
-
-  int mlen = XSTRING_LENGTH(CODING_SYSTEM_MNEMONIC (codesys));
-  char *codesys_mnemonic = (char *) alloca (mlen + 7);
+  int mlen = -1;
+  char *codesys_mnemonic;
 
   Lisp_Object codesys_name_sym, sub_codesys_obj;
 
@@ -373,16 +372,24 @@
   memcpy (codesys_name,
 	  string_data (XSYMBOL (CODING_SYSTEM_NAME (codesys))->name), len);
 
-  memcpy (codesys_mnemonic,
-	  XSTRING_DATA (CODING_SYSTEM_MNEMONIC (codesys)), mlen);
+  if (STRINGP (CODING_SYSTEM_MNEMONIC (codesys)))
+    {
+      mlen = XSTRING_LENGTH(CODING_SYSTEM_MNEMONIC (codesys));
+      codesys_mnemonic = (char *) alloca (mlen + 7);
+      memcpy (codesys_mnemonic,
+	      XSTRING_DATA (CODING_SYSTEM_MNEMONIC (codesys)), mlen);
+    }
 
 #define DEFINE_SUB_CODESYS(op_sys, op_sys_abbr, Type) do {	\
     strcpy (codesys_name + len, "-" op_sys);	\
-    strcpy (codesys_mnemonic + mlen, op_sys_abbr);	\
+    if (mlen != -1) \
+      strcpy (codesys_mnemonic + mlen, op_sys_abbr);	\
     codesys_name_sym = intern (codesys_name);	\
     sub_codesys_obj = Fcopy_coding_system (codesys_obj, codesys_name_sym); \
     XCODING_SYSTEM_EOL_TYPE (sub_codesys_obj) = Type; \
-    XCODING_SYSTEM_MNEMONIC(sub_codesys_obj) = build_string(codesys_mnemonic); \
+    if (mlen != -1) \
+      XCODING_SYSTEM_MNEMONIC(sub_codesys_obj) = \
+	build_string(codesys_mnemonic); \
     CODING_SYSTEM_##Type (codesys) = sub_codesys_obj; \
 } while (0)
 
@@ -516,6 +523,7 @@
   CODING_SYSTEM_EOL_CR   (codesys) = Qnil;
   CODING_SYSTEM_EOL_LF   (codesys) = Qnil;
   CODING_SYSTEM_TYPE     (codesys) = type;
+  CODING_SYSTEM_MNEMONIC (codesys) = Qnil;
 #ifdef MULE
   if (type == CODESYS_ISO2022)
     {
@@ -4718,7 +4726,6 @@
 	     "shift-jis");
   defsymbol (&coding_category_symbol[CODING_CATEGORY_BIG5],
 	     "big5");
-#endif /* MULE */  
   defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_7],
 	     "iso-7");
   defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_8_DESIGNATE],
@@ -4729,6 +4736,7 @@
 	     "iso-8-2");
   defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_LOCK_SHIFT],
 	     "iso-lock-shift");
+#endif /* MULE */  
   defsymbol (&coding_category_symbol[CODING_CATEGORY_NO_CONVERSION],
 	     "no-conversion");
 }