Date: Mon, 15 Aug 2005 14:02:27 +0800 (CST) From: Li-Lun Wang (Leland Wang) <llwang@infor.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/84938: x11/rxvt-unicode incorrectly handles incomplete valid multibyte character sequences Message-ID: <20050815060227.0CB7245C0C@infor.ck.tp.edu.tw> Resent-Message-ID: <200508150610.j7F6A6Gv069537@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 84938 >Category: ports >Synopsis: x11/rxvt-unicode incorrectly handles incomplete valid multibyte character sequences >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Aug 15 06:10:06 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Li-Lun Wang (Leland Wang) >Release: FreeBSD 6.0-BETA2 i386 >Organization: >Environment: System: FreeBSD ll-X31 6.0-BETA2 FreeBSD 6.0-BETA2 #4: Thu Aug 4 15:56:03 CDT 2005 root@ll-X31:/usr/obj/usr/src/sys/X31 i386 >Description: When a multibyte character sequence is valid but incomplete (mbrtowc() returns (size_t)-2), urxvt should set cmdbuf_ptr = cmdbuf_endp. There is a patch in the port making this happen only when __FreeBSD_version>502110. However, __FreeBSD_version is not defined without the inclusion of sys/param.h, making the next call to next_char() incorrectly feed the same string into mbrtowc(), thus returning a (size_t)-1. >How-To-Repeat: Install x11/rxvt-unicode on a box of which __FreeBSD_version > 502110. Open urxvt, connect to a somewhat slow host, and read some documents with characters in CJK in UTF-8. Once in a while, some character will be incorrectly interpreted. >Fix: diff -urN rxvt-unicode.orig/files/patch-src::command.C rxvt-unicode/files/patch-src::command.C --- rxvt-unicode.orig/files/patch-src::command.C Wed Dec 29 15:29:21 2004 +++ rxvt-unicode/files/patch-src::command.C Mon Aug 15 00:41:28 2005 @@ -1,6 +1,14 @@ ---- src/command.C.orig Wed Dec 29 20:09:31 2004 -+++ src/command.C Wed Dec 29 22:07:49 2004 -@@ -2716,7 +2716,9 @@ +--- src/command.C.orig Tue Jul 12 22:11:42 2005 ++++ src/command.C Mon Aug 15 00:40:13 2005 +@@ -55,6 +55,7 @@ + #endif + + #include <csignal> ++#include <sys/param.h> + + /*----------------------------------------------------------------------*/ + +@@ -2716,7 +2717,9 @@ if (len == (size_t)-2) { // the mbstate stores incomplete sequences. didn't know this :/ >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050815060227.0CB7245C0C>