misc/169780: [patch] add patch to fix utf-8 decoding bug for
irc/irssi
Kuan-Chung Chiu
buganini at gmail.com
Wed Jul 11 07:30:02 UTC 2012
>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:
More information about the freebsd-bugs
mailing list