diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-12-14 13:42:26 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-12-14 13:42:26 +0000 |
commit | fbb8ecebf32e3dc91c173f8930c022cbb07e328e (patch) | |
tree | b9ac2a6a0fbb0a1cd843bcd61e26c3372eb706c8 /Build/source/texk/dvipdfm-x/spc_pdfm.c | |
parent | d6b74aa0480e121e87775225221c87cb476f2b3f (diff) |
Guarantee that mline in is_pdfm_mapline(mline) is a zero-ended string
git-svn-id: svn://tug.org/texlive/trunk@32410 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/spc_pdfm.c')
-rw-r--r-- | Build/source/texk/dvipdfm-x/spc_pdfm.c | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/Build/source/texk/dvipdfm-x/spc_pdfm.c b/Build/source/texk/dvipdfm-x/spc_pdfm.c index 7317f5d3aad..c4550e32a80 100644 --- a/Build/source/texk/dvipdfm-x/spc_pdfm.c +++ b/Build/source/texk/dvipdfm-x/spc_pdfm.c @@ -1801,7 +1801,8 @@ spc_handler_pdfm_mapline (struct spc_env *spe, struct spc_arg *ap) char *map_name, opchr; int error = 0; static char buffer[1024]; - char *p, *q; + const char *p; + char *q; skip_white(&ap->curptr, ap->endptr); if (ap->curptr >= ap->endptr) { @@ -1826,25 +1827,8 @@ spc_handler_pdfm_mapline (struct spc_env *spe, struct spc_arg *ap) error = -1; } break; - case '+': - p = (char *)ap->curptr; - q = buffer; - while (p < ap->endptr) - *q++ = *p++; - *q = '\0'; - mrec = NEW(1, fontmap_rec); - pdf_init_fontmap_record(mrec); - error = pdf_read_fontmap_line(mrec, buffer, (long) (ap->endptr - ap->curptr), is_pdfm_mapline(buffer)); - if (error) - spc_warn(spe, "Invalid fontmap line."); - else { - pdf_append_fontmap_record(mrec->map_name, mrec); - } - pdf_clear_fontmap_record(mrec); - RELEASE(mrec); - break; default: - p = (char *)ap->curptr; + p = ap->curptr; q = buffer; while (p < ap->endptr) *q++ = *p++; @@ -1854,9 +1838,10 @@ spc_handler_pdfm_mapline (struct spc_env *spe, struct spc_arg *ap) error = pdf_read_fontmap_line(mrec, buffer, (long) (ap->endptr - ap->curptr), is_pdfm_mapline(buffer)); if (error) spc_warn(spe, "Invalid fontmap line."); - else { + else if (opchr == '+') + pdf_append_fontmap_record(mrec->map_name, mrec); + else pdf_insert_fontmap_record(mrec->map_name, mrec); - } pdf_clear_fontmap_record(mrec); RELEASE(mrec); break; |