summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/spc_pdfm.c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2013-12-14 13:42:26 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2013-12-14 13:42:26 +0000
commitfbb8ecebf32e3dc91c173f8930c022cbb07e328e (patch)
treeb9ac2a6a0fbb0a1cd843bcd61e26c3372eb706c8 /Build/source/texk/dvipdfm-x/spc_pdfm.c
parentd6b74aa0480e121e87775225221c87cb476f2b3f (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.c27
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;