texlive[46456] Build/source/texk/dvipos: dvipos: support new JFM
commits+hironobu at tug.org
commits+hironobu at tug.org
Sat Jan 27 03:26:53 CET 2018
Revision: 46456
http://tug.org/svn/texlive?view=revision&revision=46456
Author: hironobu
Date: 2018-01-27 03:26:53 +0100 (Sat, 27 Jan 2018)
Log Message:
-----------
dvipos: support new JFM spec, avoid segfault
Modified Paths:
--------------
trunk/Build/source/texk/dvipos/ChangeLog
trunk/Build/source/texk/dvipos/tfm.c
trunk/Build/source/texk/dvipos/utils.c
trunk/Build/source/texk/dvipos/utils.h
Modified: trunk/Build/source/texk/dvipos/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvipos/ChangeLog 2018-01-27 02:25:40 UTC (rev 46455)
+++ trunk/Build/source/texk/dvipos/ChangeLog 2018-01-27 02:26:53 UTC (rev 46456)
@@ -1,3 +1,8 @@
+2018-01-27 Hironobu Yamashita <h.y.acetaminophen at gmail.com>
+
+ * tfm.c, utils.[ch]: Support new JFM spec (3-byte characters
+ in TYPE > 0). This also avoids a segmentation fault.
+
2015-06-16 Peter Breitenlohner <peb at mppmu.mpg.de>
* c-auto.in (removed): Unused, replaced ...
Modified: trunk/Build/source/texk/dvipos/tfm.c
===================================================================
--- trunk/Build/source/texk/dvipos/tfm.c 2018-01-27 02:25:40 UTC (rev 46455)
+++ trunk/Build/source/texk/dvipos/tfm.c 2018-01-27 02:26:53 UTC (rev 46456)
@@ -33,6 +33,7 @@
#define tfm_unsigned_pair() get_unsigned_pair(tfm_file)
#define tfm_signed_pair() get_signed_pair(tfm_file)
#define tfm_unsigned_triple() get_unsigned_triple(tfm_file)
+#define tfm_unsigned_triple_kanji() get_unsigned_triple_kanji(tfm_file)
#define tfm_signed_triple() get_signed_triple(tfm_file)
#define tfm_unsigned_quad() get_unsigned_quad(tfm_file)
#define tfm_signed_quad() get_signed_quad(tfm_file)
@@ -66,7 +67,7 @@
SIGNED_QUAD *height;
SIGNED_QUAD *depth;
char *tex_name;
- UNSIGNED_PAIR *chartypes;
+ UNSIGNED_TRIPLE *chartypes;
fixword *unpacked_widths;
fixword *unpacked_heights;
fixword *unpacked_depths;
@@ -282,11 +283,11 @@
UNSIGNED_PAIR chartype;
register int i;
- a_tfm -> chartypes = (UNSIGNED_PAIR *)calloc(65536, sizeof(UNSIGNED_PAIR));
- for (i = 0; i < 65536; i++) (a_tfm->chartypes)[i] = 0;
+ a_tfm -> chartypes = (UNSIGNED_TRIPLE *)calloc(1114112, sizeof(UNSIGNED_TRIPLE));
+ for (i = 0; i < 1114112; i++) (a_tfm->chartypes)[i] = 0;
for (i = 0; i < a_tfm->nt; i++) {
- charcode = tfm_unsigned_pair();
- chartype = tfm_unsigned_pair();
+ charcode = tfm_unsigned_triple_kanji();
+ chartype = tfm_unsigned_byte();
(a_tfm->chartypes)[charcode] = chartype;
}
}
Modified: trunk/Build/source/texk/dvipos/utils.c
===================================================================
--- trunk/Build/source/texk/dvipos/utils.c 2018-01-27 02:25:40 UTC (rev 46455)
+++ trunk/Build/source/texk/dvipos/utils.c 2018-01-27 02:26:53 UTC (rev 46456)
@@ -59,6 +59,15 @@
return triple;
}
+UNSIGNED_TRIPLE get_unsigned_triple_kanji (FILE *fp)
+{
+ /* yy zz XX -> XXyyzz */
+ UNSIGNED_TRIPLE triple = get_unsigned_byte(fp);
+ triple = triple << 8; triple += get_unsigned_byte(fp);
+ triple += get_unsigned_byte(fp) << 16;
+ return triple;
+}
+
SIGNED_TRIPLE get_signed_triple (FILE *fp)
{
UNSIGNED_TRIPLE triple;
Modified: trunk/Build/source/texk/dvipos/utils.h
===================================================================
--- trunk/Build/source/texk/dvipos/utils.h 2018-01-27 02:25:40 UTC (rev 46455)
+++ trunk/Build/source/texk/dvipos/utils.h 2018-01-27 02:26:53 UTC (rev 46456)
@@ -40,6 +40,7 @@
extern UNSIGNED_PAIR get_unsigned_pair (FILE *fp);
extern SIGNED_PAIR get_signed_pair (FILE *fp);
extern UNSIGNED_TRIPLE get_unsigned_triple (FILE *fp);
+extern UNSIGNED_TRIPLE get_unsigned_triple_kanji (FILE *fp);
extern SIGNED_TRIPLE get_signed_triple (FILE *fp);
extern UNSIGNED_QUAD get_unsigned_quad (FILE *fp);
extern SIGNED_QUAD get_signed_quad (FILE *fp);
More information about the tex-live-commits
mailing list