Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jul 2012 07:26:29 GMT
From:      Kuan-Chung Chiu <buganini@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   misc/169780: [patch] add patch to fix utf-8 decoding bug for irc/irssi
Message-ID:  <201207110726.q6B7QTE2005795@red.freebsd.org>
Resent-Message-ID: <201207110730.q6B7U2K8057233@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         169780
>Category:       misc
>Synopsis:       [patch] add patch to fix utf-8 decoding bug for irc/irssi
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 11 07:30:02 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Kuan-Chung Chiu
>Release:        
>Organization:
Sixnology
>Environment:
>Description:
Fetch from:
http://bugs.irssi.org/index.php?do=details&task_id=870&project=5
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -ruN irssi.orig/Makefile irssi/Makefile
--- irssi.orig/Makefile	2012-07-11 15:19:59.000000000 +0800
+++ irssi/Makefile	2012-07-11 15:23:37.000000000 +0800
@@ -7,7 +7,7 @@
 
 PORTNAME=	irssi
 PORTVERSION=	0.8.15
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES?=	irc
 MASTER_SITES=	http://mirror.irssi.org/
 
diff -ruN irssi.orig/files/patch-irssi-utf8 irssi/files/patch-irssi-utf8
--- irssi.orig/files/patch-irssi-utf8	1970-01-01 08:00:00.000000000 +0800
+++ irssi/files/patch-irssi-utf8	2012-06-10 13:10:50.000000000 +0800
@@ -0,0 +1,40 @@
+Index: src/fe-common/core/utf8.h
+===================================================================
+--- src/fe-common/core/utf8.h	(revision 5189)
++++ src/fe-common/core/utf8.h	(working copy)
+@@ -12,5 +12,6 @@
+ int mk_wcwidth(unichar c);
+ 
+ #define unichar_isprint(c) (((c) & ~0x80) >= 32)
++#define is_utf8_leading(c) (((c) & 0xc0) != 0x80)
+ 
+ #endif
+Index: src/fe-text/textbuffer.c
+===================================================================
+--- src/fe-text/textbuffer.c	(revision 5189)
++++ src/fe-text/textbuffer.c	(working copy)
+@@ -23,6 +23,7 @@
+ #include "module.h"
+ #include "misc.h"
+ #include "formats.h"
++#include "utf8.h"
+ 
+ #include "textbuffer.h"
+ 
+@@ -157,6 +158,16 @@
+ 		if (left > 0 && data[left-1] == 0)
+ 			left--; /* don't split the commands */
+ 
++		/* don't split utf-8 character. (assume we can split non-utf8 anywhere. */
++		if (left < TEXT_CHUNK_USABLE_SIZE && !is_utf8_leading(data[left])) {
++			int i;
++			for (i = 1; i < 4 && left >= i; i++)
++				if (is_utf8_leading(data[left - i])) {
++					left -= i;
++					break;
++				}
++		}
++
+ 		memcpy(chunk->buffer + chunk->pos, data, left);
+ 		chunk->pos += left;
+ 


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207110726.q6B7QTE2005795>