summaryrefslogtreecommitdiff
path: root/debian/patches/04_utf8_bug_fix.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/04_utf8_bug_fix.dpatch')
-rwxr-xr-xdebian/patches/04_utf8_bug_fix.dpatch141
1 files changed, 0 insertions, 141 deletions
diff --git a/debian/patches/04_utf8_bug_fix.dpatch b/debian/patches/04_utf8_bug_fix.dpatch
deleted file mode 100755
index a5453ce..0000000
--- a/debian/patches/04_utf8_bug_fix.dpatch
+++ /dev/null
@@ -1,141 +0,0 @@
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## 04_utf8_bug_fix.dpatch by Brian Nelson <pyro@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-@DPATCH@
-diff -urNad qt4-x11-4.2.2~/src/corelib/codecs/qutfcodec.cpp qt4-x11-4.2.2/src/corelib/codecs/qutfcodec.cpp
---- qt4-x11-4.2.2~/src/corelib/codecs/qutfcodec.cpp 2006-11-27 12:26:05.000000000 -0500
-+++ qt4-x11-4.2.2/src/corelib/codecs/qutfcodec.cpp 2007-03-30 10:38:53.000000000 -0400
-@@ -127,15 +127,19 @@
- bool headerdone = false;
- QChar replacement = QChar::ReplacementCharacter;
- int need = 0;
-+ int error = -1;
- uint uc = 0;
-+ uint min_uc = 0;
- if (state) {
- if (state->flags & IgnoreHeader)
- headerdone = true;
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- need = state->remainingChars;
-- if (need)
-+ if (need) {
- uc = state->state_data[0];
-+ min_uc = state->state_data[1];
-+ }
- }
- if (!headerdone && len > 3
- && (uchar)chars[0] == 0xef && (uchar)chars[1] == 0xbb && (uchar)chars[2] == 0xbf) {
-@@ -152,7 +156,7 @@
- int invalid = 0;
-
- for (int i=0; i<len; i++) {
-- ch = *chars++;
-+ ch = chars[i];
- if (need) {
- if ((ch&0xc0) == 0x80) {
- uc = (uc << 6) | (ch & 0x3f);
-@@ -163,14 +167,27 @@
- uc -= 0x10000;
- unsigned short high = uc/0x400 + 0xd800;
- unsigned short low = uc%0x400 + 0xdc00;
-+
-+ // resize if necessary
-+ long where = qch - result.unicode();
-+ if (where + 2 >= result.size()) {
-+ result.resize(where + 2);
-+ qch = result.data() + where;
-+ }
-+
- *qch++ = QChar(high);
- *qch++ = QChar(low);
-+ } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
-+ // error
-+ *qch++ = QChar::ReplacementCharacter;
-+ ++invalid;
- } else {
- *qch++ = uc;
- }
- }
- } else {
- // error
-+ i = error;
- *qch++ = QChar::ReplacementCharacter;
- ++invalid;
- need = 0;
-@@ -181,12 +198,22 @@
- } else if ((ch & 0xe0) == 0xc0) {
- uc = ch & 0x1f;
- need = 1;
-+ error = i;
-+ min_uc = 0x80;
- } else if ((ch & 0xf0) == 0xe0) {
- uc = ch & 0x0f;
- need = 2;
-+ error = i;
-+ min_uc = 0x800;
- } else if ((ch&0xf8) == 0xf0) {
- uc = ch & 0x07;
- need = 3;
-+ error = i;
-+ min_uc = 0x10000;
-+ } else {
-+ // error
-+ *qch++ = QChar::ReplacementCharacter;
-+ ++invalid;
- }
- }
- }
-@@ -197,6 +224,7 @@
- if (headerdone)
- state->flags |= IgnoreHeader;
- state->state_data[0] = need ? uc : 0;
-+ state->state_data[1] = need ? min_uc : 0;
- }
- return result;
- }
-diff -urNad qt4-x11-4.2.2~/src/corelib/tools/qstring.cpp qt4-x11-4.2.2/src/corelib/tools/qstring.cpp
---- qt4-x11-4.2.2~/src/corelib/tools/qstring.cpp 2006-11-27 12:26:07.000000000 -0500
-+++ qt4-x11-4.2.2/src/corelib/tools/qstring.cpp 2007-03-30 10:38:53.000000000 -0400
-@@ -3352,6 +3352,7 @@
- result.resize(size); // worst case
- ushort *qch = result.d->data;
- uint uc = 0;
-+ uint min_uc = 0;
- int need = 0;
- int error = -1;
- uchar ch;
-@@ -3369,6 +3370,12 @@
- ushort low = uc%0x400 + 0xdc00;
- *qch++ = high;
- *qch++ = low;
-+ } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
-+ // overlong seqence, UTF16 surrogate or BOM
-+ i = error;
-+ qch = addOne(qch, result);
-+ *qch++ = 0xdbff;
-+ *qch++ = 0xde00 + ((uchar)str[i]);
- } else {
- *qch++ = uc;
- }
-@@ -3391,14 +3398,17 @@
- uc = ch & 0x1f;
- need = 1;
- error = i;
-+ min_uc = 0x80;
- } else if ((ch & 0xf0) == 0xe0) {
- uc = ch & 0x0f;
- need = 2;
- error = i;
-+ min_uc = 0x800;
- } else if ((ch&0xf8) == 0xf0) {
- uc = ch & 0x07;
- need = 3;
- error = i;
-+ min_uc = 0x10000;
- } else {
- // Error
- qch = addOne(qch, result);