]> git.eshelyaron.com Git - emacs.git/commitdiff
coding.c (complement_process_encoding_system): Fix previous change.
authorKenichi Handa <handa@m17n.org>
Mon, 4 Oct 2010 01:47:51 +0000 (10:47 +0900)
committerKenichi Handa <handa@m17n.org>
Mon, 4 Oct 2010 01:47:51 +0000 (10:47 +0900)
src/ChangeLog
src/coding.c

index eb9ba22b0b2fd339b427869e26b170b34d3c1e9d..bb20d5739de8d77370f1377418992757ef2f612b 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-04  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (complement_process_encoding_system): Fix previous
+       change.
+
 2010-10-02  Kenichi Handa  <handa@m17n.org>
 
        * coding.c (coding_inherit_eol_type): If parent doesn't specify
index e2819f62e55508a2af2f7b3b01b3dfe8142b72de..4b52c838d675f972b87d2ca6a32ab647c245e8a1 100644 (file)
@@ -6122,51 +6122,55 @@ Lisp_Object
 complement_process_encoding_system (coding_system)
      Lisp_Object coding_system;
 {
-  Lisp_Object spec, attrs, coding_type, eol_type;
+  Lisp_Object coding_base = Qnil, eol_base = Qnil;
+  Lisp_Object spec, attrs;
 
   if (NILP (coding_system))
     coding_system = Qundecided;
   spec = CODING_SYSTEM_SPEC (coding_system);
   attrs = AREF (spec, 0);
-  coding_type = CODING_ATTR_TYPE (attrs);
-  eol_type = AREF (spec, 2);
+  if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
+    coding_base = CODING_ATTR_BASE_NAME (attrs);
+  if (! VECTORP (AREF (spec, 2)))
+    eol_base = coding_system;
 
-  if (EQ (coding_type, Qundecided))
+  if (NILP (coding_base))
     {
       /* We must decide the text-conversion part ar first.  */
-      if (CONSP (Vdefault_process_coding_system))
+      if (CONSP (Vdefault_process_coding_system)
+         && ! NILP (XCDR (Vdefault_process_coding_system)))
        {
          coding_system = XCDR (Vdefault_process_coding_system);
-         if (! NILP (coding_system))
-           {
-             spec = CODING_SYSTEM_SPEC (coding_system);
-             attrs = AREF (spec, 0);
-             coding_type = CODING_ATTR_TYPE (attrs);
-             eol_type = AREF (spec, 2);
-           }
+         spec = CODING_SYSTEM_SPEC (coding_system);
+         attrs = AREF (spec, 0);
+         if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
+           coding_base = CODING_ATTR_BASE_NAME (attrs);
+         if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
+           eol_base = coding_system;
        }
-      if (EQ (coding_type, Qundecided))
+      if (NILP (coding_base))
        {
          coding_system = preferred_coding_system ();
          spec = CODING_SYSTEM_SPEC (coding_system);
          attrs = AREF (spec, 0);
-         coding_type = CODING_ATTR_TYPE (attrs);
-         eol_type = AREF (spec, 2);
+         if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
+           coding_base = CODING_ATTR_BASE_NAME (attrs);
+         if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
+           eol_base = coding_system;
        }
-      if (EQ (coding_type, Qundecided))
+      if (NILP (coding_base))
        {
-         coding_system = Qraw_text;
-         coding_type = Qraw_text;
-         eol_type = Qnil;
+         spec = CODING_SYSTEM_SPEC (Qraw_text);
+         attrs = AREF (spec, 0);
+         if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
+           coding_base = CODING_ATTR_BASE_NAME (attrs);
+         if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
+           eol_base = coding_system;
        }
     }
-  if (NILP (eol_type) || VECTORP (eol_type))
-    {
-      /* We must decide the eol-conversion part.  */      
-      coding_system = coding_inherit_eol_type (coding_system, coding_system);
-    }
 
-  return coding_system;
+  /* We must decide the eol-conversion part (if not yet done).  */
+  return coding_inherit_eol_type (coding_base, eol_base);
 }