[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Mule-UCS 0.84 (KOUGETSUDAI) release.



On November 4, 2002, [mule:03314],
Tatsuya Kinoshita <tats@xxxxxxxxxxxxxx> wrote:

> http://tats.iris.ne.jp/mule-ucs/mule-ucs-0.84+tats20021104.diff.gz
> 
> 	* Merge patches from xemacs-mule-sumo-2002-05-22.
> 	* utf.el (utf-8-ccl-decode): Don't read any numbers lager than 24bit.
> 	* reldata/uethiopic.el: Typo fix for (provide 'uethiopic).
> 	  (from Debian xemacs21-mulesupport_2002.05.22-3)

I modified utf-8-ccl-decode a bit just now.

-- 
Tatsuya Kinoshita
--- mule-ucs-0.84+tats20021104/lisp/ChangeLog
+++ mule-ucs-0.84+tats20021105/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2002-11-05  Tatsuya Kinoshita  <tats@xxxxxxxxxxxxxx>
+
+	* utf.el (utf-8-ccl-decode): Use `unicode-replace-char' if a number
+	is larger than 24bit.
+	
 2002-11-04  Tatsuya Kinoshita  <tats@xxxxxxxxxxxxxx>
 
 	* mucs.el: Merge patch from xemacs-mule-sumo-2002-05-22.
@@ -14,7 +19,7 @@
 	* reldata/u-cns-6.el: Likewise.
 	* reldata/u-cns-7.el: Likewise.
 
-	* utf.el (utf-8-ccl-decode): Don't read any numbers lager than 24bit.
+	* utf.el (utf-8-ccl-decode): Don't read any numbers larger than 24bit.
 
 	* reldata/uethiopic.el: Typo fix for (provide 'uethiopic).
 	  (from Debian xemacs21-mulesupport_2002.05.22-3)
--- mule-ucs-0.84+tats20021104/lisp/utf.el
+++ mule-ucs-0.84+tats20021105/lisp/utf.el
@@ -161,7 +161,8 @@
 		     (if (r0 < ?\xFC)
 			 ;; 5-byte sequence
 			 (;;(r0 = ((r0 & ?\x03) << 24))
-			  ;; MUCS can't read any numbers lager than 24bit
+			  ;; MUCS can't read any numbers larger than 24bit
+			  (r6 = (r0 & ?\x03))
 			  (r0 = 0)
 			  (read r4)
 			  (r4 ^= ?\x80)
@@ -186,10 +187,13 @@
 				   (if (r4 >= ?\x40)
 				       ;; not a continuation byte
 				       (r0 = ,unicode-replace-char)
-				     ((r0 |= r4)
-				      (if (r0 < ,(cn "0x200000"))
-					  ;; over-long sequence
-					  (r0 = ,unicode-replace-char)))))))))))
+				     (if (r6 > 0)
+					 ;; larger than 24bit
+					 (r0 = ,unicode-replace-char)
+				       ((r0 |= r4)
+					(if (r0 < ,(cn "0x200000"))
+					    ;; over-long sequence
+					    (r0 = ,unicode-replace-char))))))))))))
 		       (if (r0 < ?\xFE)
 			   ;; 6-byte sequence - not supported, but
 			   ;; we must read all the bytes, and check