changeset 110836:093225094d08

Fix complementing of a coding system
author Kenichi Handa <handa@m17n.org>
date Sat, 02 Oct 2010 11:53:21 +0900
parents 5481007b7ce9 (current diff) 526c42ed21b1 (diff)
children d35b3cc77cf3
files
diffstat 2 files changed, 14 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Thu Sep 30 20:41:12 2010 -0700
+++ b/src/ChangeLog	Sat Oct 02 11:53:21 2010 +0900
@@ -1,3 +1,10 @@
+2010-10-02  Kenichi Handa  <handa@m17n.org>
+
+	* coding.c (coding_inherit_eol_type): If parent doesn't specify
+	eol-format, inherit from the system's default.
+	(complement_process_encoding_system): Make a new coding system
+	inherit the original eol-format.
+
 2010-09-30  Kenichi Handa  <handa@m17n.org>
 
 	* coding.c (complement_process_encoding_system): New function.
--- a/src/coding.c	Thu Sep 30 20:41:12 2010 -0700
+++ b/src/coding.c	Sat Oct 02 11:53:21 2010 +0900
@@ -6073,10 +6073,9 @@
 }
 
 
-/* If CODING_SYSTEM doesn't specify end-of-line format but PARENT
-   does, return one of the subsidiary that has the same eol-spec as
-   PARENT.  Otherwise, return CODING_SYSTEM.  If PARENT is nil,
-   inherit end-of-line format from the system's setting
+/* If CODING_SYSTEM doesn't specify end-of-line format, return one of
+   the subsidiary that has the same eol-spec as PARENT (if it is not
+   nil and specifies end-of-line format) or the system's setting
    (system_eol_type).  */
 
 Lisp_Object
@@ -6099,6 +6098,8 @@
 
 	  parent_spec = CODING_SYSTEM_SPEC (parent);
 	  parent_eol_type = AREF (parent_spec, 2);
+	  if (VECTORP (parent_eol_type))
+	    parent_eol_type = system_eol_type;	    
 	}
       else
 	parent_eol_type = system_eol_type;
@@ -6132,7 +6133,7 @@
 
   if (EQ (coding_type, Qundecided))
     {
-      /* We must decide the text-conversion part.  */
+      /* We must decide the text-conversion part ar first.  */
       if (CONSP (Vdefault_process_coding_system))
 	{
 	  coding_system = XCDR (Vdefault_process_coding_system);
@@ -6162,7 +6163,7 @@
   if (NILP (eol_type) || VECTORP (eol_type))
     {
       /* We must decide the eol-conversion part.  */      
-      coding_system = coding_inherit_eol_type (coding_system, Qnil);
+      coding_system = coding_inherit_eol_type (coding_system, coding_system);
     }
 
   return coding_system;