summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-07-surrogates
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-07-surrogates')
-rw-r--r--Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-07-surrogates44
1 files changed, 0 insertions, 44 deletions
diff --git a/Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-07-surrogates b/Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-07-surrogates
deleted file mode 100644
index 22c547b19aa..00000000000
--- a/Build/source/texk/dvipdfmx/dvipdfmx-20110311-PATCHES/patch-07-surrogates
+++ /dev/null
@@ -1,44 +0,0 @@
- Handle UTP-16 surrogates for UCS-4 supplementary planes.
-
-diff -ur dvipdfmx-20110311.orig/src/pdfdev.c dvipdfmx-20110311/src/pdfdev.c
---- dvipdfmx-20110311.orig/src/pdfdev.c 2012-01-17 19:27:40.000000000 +0100
-+++ dvipdfmx-20110311/src/pdfdev.c 2012-03-05 13:44:30.000000000 +0100
-@@ -960,17 +960,32 @@
- }
- length *= 4;
- } else if (ctype == 2) {
-+ int len = 0;
-+
- if (length * 2 >= FORMAT_BUF_SIZE) {
- WARN("Too long string...");
- return -1;
- }
-- for (i = 0; i < length; i += 2) {
-- sbuf1[i*2 ] = font->ucs_group;
-- sbuf1[i*2+1] = font->ucs_plane;
-- sbuf1[i*2+2] = p[i];
-- sbuf1[i*2+3] = p[i+1];
-+ for (i = 0; i < length; i += 2, len += 4) {
-+ sbuf1[len ] = font->ucs_group;
-+ if ((p[i] & 0xf8) == 0xd8) {
-+ int c;
-+ /* Check for valid surrogate pair. */
-+ if ((p[i] & 0xfc) != 0xd8 || i + 2 >= length || (p[i+2] & 0xfc) != 0xdc) {
-+ WARN("Invalid surrogate p[%d]=%02X...", i, p[i]);
-+ return -1;
-+ }
-+ c = (((p[i] & 0x03) << 10) | (p[i+1] << 2) | (p[i+2] & 0x03)) + 0x100;
-+ sbuf1[len+1] = (c >> 8) & 0xff;
-+ sbuf1[len+2] = c & 0xff;
-+ i += 2;
-+ } else {
-+ sbuf1[len+1] = font->ucs_plane;
-+ sbuf1[len+2] = p[i];
-+ }
-+ sbuf1[len+3] = p[i+1];
- }
-- length *= 2;
-+ length = len;
- }
- p = sbuf1;
- } else if (ctype == 1 && font->mapc >= 0) {