summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2018-03-13 11:09:44 +0100
committerWerner Lemberg <wl@gnu.org>2018-03-13 11:09:44 +0100
commit78cded2c5c687d06c5b74b308fb54af7f807dc0d (patch)
tree00f6a18faba930b0082a8390a80bbbf1fef924a4
parent098dd70cb1845b8c325ef4801c5f2e09e476b1ed (diff)
downloadfreetype2-78cded2c5c687d06c5b74b308fb54af7f807dc0d.tar.gz
Fix cmap format 2 handling (#53320).
The patch introduced for #52646 was not correct. * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
-rw-r--r--ChangeLog8
-rw-r--r--src/sfnt/ttcmap.c15
2 files changed, 15 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 25639aeac..65bc40956 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2018-03-13 Werner Lemberg <wl@gnu.org>
+
+ Fix cmap format 2 handling (#53320).
+
+ The patch introduced for #52646 was not correct.
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
+
2018-03-10 Nikolaus Waxweiler <madigens@gmail.com>
* CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.
diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c
index 8cc70f759..58b49c94d 100644
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -549,19 +549,18 @@
}
}
}
+
+ /* if unsuccessful, avoid `charcode' leaving */
+ /* the current 256-character block */
+ if ( count )
+ charcode--;
}
- /* If `charcode' is <= 0xFF, retry with `charcode + 1'. If */
- /* `charcode' is 0x100 after the loop, do nothing since we have */
- /* just reached the first sub-header for two-byte character codes. */
- /* */
- /* For all other cases, we jump to the next sub-header and adjust */
- /* `charcode' accordingly. */
+ /* If `charcode' is <= 0xFF, retry with `charcode + 1'. */
+ /* Otherwise jump to the next 256-character block and retry. */
Next_SubHeader:
if ( charcode <= 0xFF )
charcode++;
- else if ( charcode == 0x100 )
- ;
else
charcode = FT_PAD_FLOOR( charcode, 0x100 ) + 0x100;
}