[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: UTF-8 related display problem
From: |
Kenichi Handa |
Subject: |
Re: UTF-8 related display problem |
Date: |
Tue, 8 Oct 2002 10:09:35 +0900 (JST) |
User-agent: |
SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/21.1.30 (sparc-sun-solaris2.6) MULE/5.0 (SAKAKI) |
In article <5.1.0.14.2.20021007210058.031a7818@pop.puretec.de>, Marc Wilhelm
Küster <kuester@saphor.net> writes:
> Please find attached a version of the file that has all ASCII letters (a-z,
> A-Z) transformed into a's. All non-ASCII letters are left intact. The bug
> still occurs.
> Just open the file as a UTF-8 text file. Note that the display ends right
> in a Hebrew passage on line 2883 (the line begins with <a><?aaaa ^@-0?>
I found a bug that is revealed typically by decoding large
utf-8-dos file (your case).
I've just installed the attached fix in HEAD and RC. Could
you please try it?
---
Ken'ichi HANDA
handa@m17n.org
2002-10-08 Kenichi Handa <handa@m17n.org>
* coding.c (code_convert_region): When we need more GAP for
conversion, pay attention to the case that coding->produced is not
greater than coding->consumed.
Index: coding.c
===================================================================
RCS file: /cvs/emacs/src/coding.c,v
retrieving revision 1.259
retrieving revision 1.260
diff -u -c -r1.259 -r1.260
cvs server: conflicting specifications of output style
*** coding.c 30 Sep 2002 06:28:31 -0000 1.259
--- coding.c 8 Oct 2002 00:57:59 -0000 1.260
***************
*** 5696,5704 ****
REQUIRE + LEN_BYTE = LEN_BYTE * (NEW / ORIG)
REQUIRE = LEN_BYTE * (NEW - ORIG) / ORIG
Here, we are sure that NEW >= ORIG. */
! float ratio = coding->produced - coding->consumed;
! ratio /= coding->consumed;
! require = len_byte * ratio;
first = 0;
}
if ((src - dst) < (require + 2000))
--- 5696,5714 ----
REQUIRE + LEN_BYTE = LEN_BYTE * (NEW / ORIG)
REQUIRE = LEN_BYTE * (NEW - ORIG) / ORIG
Here, we are sure that NEW >= ORIG. */
! float ratio;
!
! if (coding->produced <= coding->consumed)
! {
! /* This happens because of CCL-based coding system with
! eol-type CRLF. */
! require = 0;
! }
! else
! {
! ratio = (coding->produced - coding->consumed) / coding->consumed;
! require = len_byte * ratio;
! }
first = 0;
}
if ((src - dst) < (require + 2000))