From 4e850024741afa0c993d267a6d2c1ff0af2f6609 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Sat, 21 Jun 2014 10:44:58 +0000 Subject: dvipdfm-x: Avoid undefined behaviour when char is signed git-svn-id: svn://tug.org/texlive/trunk@34344 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/dvipdfm-x/ChangeLog | 7 ++++++ Build/source/texk/dvipdfm-x/agl.c | 12 +++++----- Build/source/texk/dvipdfm-x/cid.c | 2 +- Build/source/texk/dvipdfm-x/dpxfile.c | 2 +- Build/source/texk/dvipdfm-x/dpxutil.c | 6 ++--- Build/source/texk/dvipdfm-x/dvipdfmx.c | 16 ++++++------- Build/source/texk/dvipdfm-x/epdf.c | 2 +- Build/source/texk/dvipdfm-x/fontmap.c | 6 ++--- Build/source/texk/dvipdfm-x/mpost.c | 8 +++---- Build/source/texk/dvipdfm-x/otl_conf.c | 2 +- Build/source/texk/dvipdfm-x/otl_opt.c | 2 +- Build/source/texk/dvipdfm-x/pdfnames.c | 2 +- Build/source/texk/dvipdfm-x/pdfparse.c | 22 +++++++++--------- Build/source/texk/dvipdfm-x/spc_dvips.c | 2 +- Build/source/texk/dvipdfm-x/spc_html.c | 40 ++++++++++++++++----------------- Build/source/texk/dvipdfm-x/spc_misc.c | 2 +- Build/source/texk/dvipdfm-x/specials.c | 4 ++-- Build/source/texk/dvipdfm-x/subfont.c | 14 ++++++------ 18 files changed, 79 insertions(+), 72 deletions(-) (limited to 'Build/source/texk') diff --git a/Build/source/texk/dvipdfm-x/ChangeLog b/Build/source/texk/dvipdfm-x/ChangeLog index 2fa43f5c491..9202a976bc3 100644 --- a/Build/source/texk/dvipdfm-x/ChangeLog +++ b/Build/source/texk/dvipdfm-x/ChangeLog @@ -3,6 +3,13 @@ * pdfdoc.c: Set PDF Docinfo's /Producer string from pdf:docinfo if supplied (http://sourceforge.net/p/xetex/bugs/93/). +2014-06-20 Peter Breitenlohner + + * agl.c, cid.c, dpxfile.c, dpxutil.c, dvipdfmx.c, epdf.c, + fontmap.c, mpost.c, otl_conf.c, otl_opt.c, pdfnames.c, + pdfparse.c, spc_dvips.c, spc_html.c, spc_misc.c, specials.c, + subfont.c: Avoid undefined behaviour when char is signed. + 2014-06-20 Akira Kakuto * xbb.c: Check kpse_in_name_ok and kpse_out_name_ok in extractbb. diff --git a/Build/source/texk/dvipdfm-x/agl.c b/Build/source/texk/dvipdfm-x/agl.c index 601a8ff88bc..fe9c6adfff4 100644 --- a/Build/source/texk/dvipdfm-x/agl.c +++ b/Build/source/texk/dvipdfm-x/agl.c @@ -329,7 +329,7 @@ agl_normalized_name (char *glyphname) strcpy(agln->suffix, "sc"); agln->name = NEW(n+1, char); for (i = 0; i < n; i++) { - agln->name[i] = isupper(glyphname[i]) ? + agln->name[i] = isupper((unsigned char)glyphname[i]) ? (glyphname[i] + 32) : glyphname[i]; } agln->name[n] = '\0'; @@ -536,7 +536,7 @@ agl_name_is_unicode (const char *glyphname) * Check if the 4th character is uppercase hexadecimal digit. * "union" should not be treated as Unicode glyph name. */ - if (isdigit(c) || (c >= 'A' && c <= 'F')) + if (isdigit((unsigned char)c) || (c >= 'A' && c <= 'F')) return 1; else return 0; @@ -544,7 +544,7 @@ agl_name_is_unicode (const char *glyphname) glyphname[0] == 'u') { for (i = 1; i < len - 1; i++) { c = glyphname[i]; - if (!isdigit(c) && (c < 'A' || c > 'F')) + if (!isdigit((unsigned char)c) && (c < 'A' || c > 'F')) return 0; } return 1; @@ -573,12 +573,12 @@ agl_name_convert_unicode (const char *glyphname) p = glyphname + 1; ucv = 0; while (*p != '\0' && *p != '.') { - if (!isdigit(*p) && (*p < 'A' || *p > 'F')) { + if (!isdigit((unsigned char)*p) && (*p < 'A' || *p > 'F')) { WARN("Invalid char %c in Unicode glyph name %s.", *p, glyphname); return -1; } ucv <<= 4; - ucv += isdigit(*p) ? *p - '0' : *p - 'A' + 10; + ucv += isdigit((unsigned char)*p) ? *p - '0' : *p - 'A' + 10; p++; } @@ -603,7 +603,7 @@ xtol (const char *start, int len) while (len-- > 0) { v <<= 4; - if (isdigit(*start)) { + if (isdigit((unsigned char)*start)) { v += *start - '0'; } else if (*start >= 'A' && *start <= 'F') { v += *start - 'A' + 10; diff --git a/Build/source/texk/dvipdfm-x/cid.c b/Build/source/texk/dvipdfm-x/cid.c index 48f79843f58..35a562394a0 100644 --- a/Build/source/texk/dvipdfm-x/cid.c +++ b/Build/source/texk/dvipdfm-x/cid.c @@ -783,7 +783,7 @@ get_cidsysinfo (const char *map_name, fontmap_opt *fmap_opt) CIDFONT_DEBUG_STR, fmap_opt->charcoll); q++; - if (!isdigit(q[0])) + if (!isdigit((unsigned char)q[0])) ERROR("%s: String can't be converted to REGISTRY-ORDERING-SUPPLEMENT: %s", CIDFONT_DEBUG_STR, fmap_opt->charcoll); diff --git a/Build/source/texk/dvipdfm-x/dpxfile.c b/Build/source/texk/dvipdfm-x/dpxfile.c index f890a8f343e..575ba52e525 100644 --- a/Build/source/texk/dvipdfm-x/dpxfile.c +++ b/Build/source/texk/dvipdfm-x/dpxfile.c @@ -1125,7 +1125,7 @@ ispscmap (FILE *fp) p = mfgets(_sbuf, 128, fp); p[127] = '\0'; if (!p || strlen(p) < 4 || memcmp(p, "%!PS", 4)) return 0; - for (p += 4; *p && !isspace(*p); p++); + for (p += 4; *p && !isspace((unsigned char)*p); p++); for ( ; *p && (*p == ' ' || *p == '\t'); p++); if (*p == '\0' || strlen(p) < strlen("Resource-CMap")) return 0; diff --git a/Build/source/texk/dvipdfm-x/dpxutil.c b/Build/source/texk/dvipdfm-x/dpxutil.c index a6d3d274467..acf318026ab 100644 --- a/Build/source/texk/dvipdfm-x/dpxutil.c +++ b/Build/source/texk/dvipdfm-x/dpxutil.c @@ -477,12 +477,12 @@ read_c_escchar (char *r, const char **pp, const char *endptr) { int i; for (c = 0, i = 0, p++; - i < 2 && p < endptr && isxdigit(p[0]); + i < 2 && p < endptr && isxdigit((unsigned char)p[0]); i++, p++) c = (c << 4) + - (isdigit(p[0]) ? + (isdigit((unsigned char)p[0]) ? p[0] - '0' : - (islower(p[0]) ? p[0] - 'a' + 10: p[0] - 'A' + 10)); + (islower((unsigned char)p[0]) ? p[0] - 'a' + 10: p[0] - 'A' + 10)); } break; default: diff --git a/Build/source/texk/dvipdfm-x/dvipdfmx.c b/Build/source/texk/dvipdfm-x/dvipdfmx.c index 64b71257776..1637961ec37 100644 --- a/Build/source/texk/dvipdfm-x/dvipdfmx.c +++ b/Build/source/texk/dvipdfm-x/dvipdfmx.c @@ -347,17 +347,17 @@ select_pages (const char *pagespec) page_ranges[num_page_ranges].first = 0; page_ranges[num_page_ranges].last = 0; - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); q = parse_unsigned(&p, p + strlen(p)); /* Can't be signed. */ if (q) { /* '-' is allowed here */ page_ranges[num_page_ranges].first = atoi(q) - 1; page_ranges[num_page_ranges].last = page_ranges[num_page_ranges].first; RELEASE(q); } - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); if (*p == '-') { - for (++p; *p && isspace(*p); p++); + for (++p; *p && isspace((unsigned char)*p); p++); page_ranges[num_page_ranges].last = -1; if (*p) { q = parse_unsigned(&p, p + strlen(p)); @@ -365,7 +365,7 @@ select_pages (const char *pagespec) page_ranges[num_page_ranges].last = atoi(q) - 1; RELEASE(q); } - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); } } else { page_ranges[num_page_ranges].last = page_ranges[num_page_ranges].first; @@ -376,7 +376,7 @@ select_pages (const char *pagespec) if (*p == ',') p++; else { - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); if (*p) ERROR("Bad page range specification: %s", p); } @@ -539,7 +539,7 @@ do_args (int argc, char *argv[]) { int ver_minor; - if (isdigit(*(flag+1))) { + if (isdigit((unsigned char)*(flag+1))) { flag++; ver_minor = atoi(flag); } else { @@ -563,7 +563,7 @@ do_args (int argc, char *argv[]) { int level; - if (isdigit(*(flag+1))) { + if (isdigit((unsigned char)*(flag+1))) { flag++; level = atoi(flag); } else { @@ -575,7 +575,7 @@ do_args (int argc, char *argv[]) } break; case 'd': - if (isdigit(*(flag+1))) { + if (isdigit((unsigned char)*(flag+1))) { flag++; pdfdecimaldigits = atoi(flag); } else { diff --git a/Build/source/texk/dvipdfm-x/epdf.c b/Build/source/texk/dvipdfm-x/epdf.c index 4c9bbfc4105..4aae4ee9ece 100644 --- a/Build/source/texk/dvipdfm-x/epdf.c +++ b/Build/source/texk/dvipdfm-x/epdf.c @@ -675,7 +675,7 @@ pdf_copy_clip (FILE *image_file, int pageNo, double x_user, double y_user) } else if (*clip_path == '-' || *clip_path == '+' || *clip_path == '.' - || isdigit(*clip_path)) { + || isdigit((unsigned char)*clip_path)) { stack[++top] = strtod(clip_path, &temp); clip_path = temp; } else if (*clip_path == '[') { diff --git a/Build/source/texk/dvipdfm-x/fontmap.c b/Build/source/texk/dvipdfm-x/fontmap.c index d14feaa2771..c2d82850e5a 100644 --- a/Build/source/texk/dvipdfm-x/fontmap.c +++ b/Build/source/texk/dvipdfm-x/fontmap.c @@ -254,7 +254,7 @@ parse_string_value (const char **pp, const char *endptr) if (*p == '"') q = parse_c_string(&p, endptr); else { - for (n = 0; p < endptr && !isspace(*p); p++, n++); + for (n = 0; p < endptr && !isspace((unsigned char)*p); p++, n++); if (n == 0) return NULL; q = NEW(n + 1, char); @@ -515,7 +515,7 @@ fontmap_parse_mapdef_dpm (fontmap_rec *mrec, if (!q) { WARN("Invalid value for option 'm'."); return -1; - } else if (p < endptr && !isspace(*p)) { + } else if (p < endptr && !isspace((unsigned char)*p)) { WARN("Invalid value for option 'm': %s", q); RELEASE(q); return -1; @@ -1294,7 +1294,7 @@ strip_options (const char *map_name, fontmap_opt *opt) opt->style = FONTMAP_STYLE_NONE; opt->flags = 0; - if (*p == ':' && isdigit(*(p+1))) { + if (*p == ':' && isdigit((unsigned char)*(p+1))) { opt->index = (int) strtoul(p+1, &next, 10); if (*next == ':') p = next + 1; diff --git a/Build/source/texk/dvipdfm-x/mpost.c b/Build/source/texk/dvipdfm-x/mpost.c index ea65d03dde2..36476929021 100644 --- a/Build/source/texk/dvipdfm-x/mpost.c +++ b/Build/source/texk/dvipdfm-x/mpost.c @@ -219,7 +219,7 @@ mps_scan_bbox (const char **pp, const char *endptr, pdf_rect *bbox) int i; /* skip_white() skips lines starting '%'... */ - while (*pp < endptr && isspace(**pp)) + while (*pp < endptr && isspace((unsigned char)**pp)) (*pp)++; /* Scan for bounding box record */ @@ -254,7 +254,7 @@ mps_scan_bbox (const char **pp, const char *endptr, pdf_rect *bbox) } } skip_line (pp, endptr); - while (*pp < endptr && isspace(**pp)) + while (*pp < endptr && isspace((unsigned char)**pp)) (*pp)++; } @@ -1414,14 +1414,14 @@ mp_parse_body (const char **start, const char *end, double x_user, double y_user skip_white(start, end); while (*start < end && !error) { - if (isdigit(**start) || + if (isdigit((unsigned char)**start) || (*start < end - 1 && (**start == '+' || **start == '-' || **start == '.' ))) { double value; char *next; value = strtod(*start, &next); - if (next < end && !strchr("<([{/%", *next) && !isspace(*next)) { + if (next < end && !strchr("<([{/%", *next) && !isspace((unsigned char)*next)) { WARN("Unkown PostScript operator."); dump(*start, next); error = 1; diff --git a/Build/source/texk/dvipdfm-x/otl_conf.c b/Build/source/texk/dvipdfm-x/otl_conf.c index 1cb5a69d4ed..bb1f0f04b30 100644 --- a/Build/source/texk/dvipdfm-x/otl_conf.c +++ b/Build/source/texk/dvipdfm-x/otl_conf.c @@ -367,7 +367,7 @@ parse_block (pdf_obj *gclass, const char **pp, const char *endptr) tmp = NEW(len+1, char); memset(tmp, 0, len+1); for (i = 0; i < len; i++) { - if (!isspace(**pp)) + if (!isspace((unsigned char)**pp)) tmp[i] = **pp; (*pp)++; } diff --git a/Build/source/texk/dvipdfm-x/otl_opt.c b/Build/source/texk/dvipdfm-x/otl_opt.c index 8676d538618..bccf1d0afb0 100644 --- a/Build/source/texk/dvipdfm-x/otl_opt.c +++ b/Build/source/texk/dvipdfm-x/otl_opt.c @@ -184,7 +184,7 @@ parse_expr (const char **pp, const char *endptr) for (i = 0; i < 4; i++) { if (**pp == ' ' || **pp == '?' || - isalpha(**pp) || isdigit(**pp)) + isalpha((unsigned char)**pp) || isdigit((unsigned char)**pp)) curr->data[i] = **pp; else if (**pp == '_') curr->data[i] = ' '; diff --git a/Build/source/texk/dvipdfm-x/pdfnames.c b/Build/source/texk/dvipdfm-x/pdfnames.c index 3cc0a1a9f7d..eb4659cfd3a 100644 --- a/Build/source/texk/dvipdfm-x/pdfnames.c +++ b/Build/source/texk/dvipdfm-x/pdfnames.c @@ -58,7 +58,7 @@ printable_key (const char *key, int keylen) for (i = 0, len = 0; i < keylen && len < MAX_KEY; i++) { - if (isprint(key[i])) { + if (isprint((unsigned char)key[i])) { pkey[len++] = key[i]; } else { hi = (key[i] >> 4) & 0xff; diff --git a/Build/source/texk/dvipdfm-x/pdfparse.c b/Build/source/texk/dvipdfm-x/pdfparse.c index bfc129d2e45..3e75a4cc775 100644 --- a/Build/source/texk/dvipdfm-x/pdfparse.c +++ b/Build/source/texk/dvipdfm-x/pdfparse.c @@ -151,11 +151,11 @@ parse_number (const char **start, const char *end) p = *start; if (p < end && (*p == '+' || *p == '-')) p++; - while (p < end && isdigit(*p)) + while (p < end && isdigit((unsigned char)*p)) p++; if (p < end && *p == '.') { p++; - while (p < end && isdigit(*p)) + while (p < end && isdigit((unsigned char)*p)) p++; } number = parsed_string(*start, p); @@ -172,7 +172,7 @@ parse_unsigned (const char **start, const char *end) skip_white(start, end); for (p = *start; p < end; p++) { - if (!isdigit(*p)) + if (!isdigit((unsigned char)*p)) break; } number = parsed_string(*start, p); @@ -252,7 +252,7 @@ parse_pdf_number (const char **pp, const char *endptr) p = *pp; skip_white(&p, endptr); if (p >= endptr || - (!isdigit(p[0]) && p[0] != '.' && + (!isdigit((unsigned char)p[0]) && p[0] != '.' && p[0] != '+' && p[0] != '-')) { WARN("Could not find a numeric object."); return NULL; @@ -282,7 +282,7 @@ parse_pdf_number (const char **pp, const char *endptr) } else { has_dot = 1; } - } else if (isdigit(p[0])) { + } else if (isdigit((unsigned char)p[0])) { if (has_dot) { if (nddigits == DDIGITS_MAX && pdf_obj_get_verbose() > 1) { WARN("Number with more than %d fractional digits.", DDIGITS_MAX); @@ -321,7 +321,7 @@ pn_getc (const char **pp, const char *endptr) *pp = endptr; return -1; } - if (!isxdigit(p[1]) || !isxdigit(p[2])) { + if (!isxdigit((unsigned char)p[1]) || !isxdigit((unsigned char)p[2])) { *pp += 3; return -1; } @@ -651,7 +651,7 @@ parse_pdf_string (const char **pp, const char *endptr) if (**pp == '(') return parse_pdf_literal_string(pp, endptr); else if (**pp == '<' && - (*(*pp + 1) == '>' || isxdigit(*(*pp + 1)))) { + (*(*pp + 1) == '>' || isxdigit((unsigned char)*(*pp + 1)))) { return parse_pdf_hex_string(pp, endptr); } } @@ -925,11 +925,11 @@ try_pdf_reference (const char *start, const char *end, const char **endptr, pdf_ *endptr = start; skip_white(&start, end); - if (start > end - 5 || !isdigit(*start)) { + if (start > end - 5 || !isdigit((unsigned char)*start)) { return NULL; } while (!is_space(*start)) { - if (start >= end || !isdigit(*start)) { + if (start >= end || !isdigit((unsigned char)*start)) { return NULL; } id = id * 10 + (*start - '0'); @@ -937,10 +937,10 @@ try_pdf_reference (const char *start, const char *end, const char **endptr, pdf_ } skip_white(&start, end); - if (start >= end || !isdigit(*start)) + if (start >= end || !isdigit((unsigned char)*start)) return NULL; while (!is_space(*start)) { - if (start >= end || !isdigit(*start)) + if (start >= end || !isdigit((unsigned char)*start)) return NULL; gen = gen * 10 + (*start - '0'); start++; diff --git a/Build/source/texk/dvipdfm-x/spc_dvips.c b/Build/source/texk/dvipdfm-x/spc_dvips.c index f029ae2f170..bb1384a42c4 100644 --- a/Build/source/texk/dvipdfm-x/spc_dvips.c +++ b/Build/source/texk/dvipdfm-x/spc_dvips.c @@ -963,7 +963,7 @@ spc_dvips_setup_handler (struct spc_handler *handle, key = args->curptr; while (args->curptr < args->endptr && - isalpha(args->curptr[0])) { + isalpha((unsigned char)args->curptr[0])) { args->curptr++; } /* Test for "ps:". The "ps::" special is subsumed under this case. */ diff --git a/Build/source/texk/dvipdfm-x/spc_html.c b/Build/source/texk/dvipdfm-x/spc_html.c index 9685f2886d5..9e43bfae940 100644 --- a/Build/source/texk/dvipdfm-x/spc_html.c +++ b/Build/source/texk/dvipdfm-x/spc_html.c @@ -92,7 +92,7 @@ parse_key_val (const char **pp, const char *endptr, char **kp, char **vp) char *k, *v; int n, error = 0; - for (p = *pp ; p < endptr && isspace(*p); p++); + for (p = *pp ; p < endptr && isspace((unsigned char)*p); p++); #if 0 while (!error && p < endptr && ((*p >= 'a' && *p <= 'z') || @@ -161,18 +161,18 @@ read_html_tag (char *name, pdf_obj *attr, int *type, const char **pp, const char const char *p = *pp; int n = 0, error = 0; - for ( ; p < endptr && isspace(*p); p++); + for ( ; p < endptr && isspace((unsigned char)*p); p++); if (p >= endptr || *p != '<') return -1; *type = HTML_TAG_TYPE_OPEN; - for (++p; p < endptr && isspace(*p); p++); + for (++p; p < endptr && isspace((unsigned char)*p); p++); if (p < endptr && *p == '/') { *type = HTML_TAG_TYPE_CLOSE; - for (++p; p < endptr && isspace(*p); p++); + for (++p; p < endptr && isspace((unsigned char)*p); p++); } -#define ISDELIM(c) ((c) == '>' || (c) == '/' || isspace(c)) +#define ISDELIM(c) ((c) == '>' || (c) == '/' || isspace((unsigned char)c)) for (n = 0; p < endptr && n < HTML_TAG_NAME_MAX && !ISDELIM(*p); n++, p++) { name[n] = *p; } @@ -182,7 +182,7 @@ read_html_tag (char *name, pdf_obj *attr, int *type, const char **pp, const char return -1; } - for ( ; p < endptr && isspace(*p); p++); + for ( ; p < endptr && isspace((unsigned char)*p); p++); while (p < endptr && !error && *p != '/' && *p != '>') { char *kp = NULL, *vp = NULL; error = parse_key_val(&p, endptr, &kp, &vp); @@ -194,7 +194,7 @@ read_html_tag (char *name, pdf_obj *attr, int *type, const char **pp, const char RELEASE(kp); RELEASE(vp); } - for ( ; p < endptr && isspace(*p); p++); + for ( ; p < endptr && isspace((unsigned char)*p); p++); } if (error) { *pp = p; @@ -203,7 +203,7 @@ read_html_tag (char *name, pdf_obj *attr, int *type, const char **pp, const char if (p < endptr && *p == '/') { *type = HTML_TAG_TYPE_EMPTY; - for (++p; p < endptr && isspace(*p); p++); + for (++p; p < endptr && isspace((unsigned char)*p); p++); } if (p == endptr || *p != '>') { *pp = p; @@ -615,16 +615,16 @@ spc_html__img_empty (struct spc_env *spe, pdf_obj *attr, struct spc_html_ *sd) if (obj) { const char *p = pdf_string_value(obj); pdf_tmatrix N; - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); while (*p && !error) { pdf_setmatrix(&N, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); error = cvt_a_to_tmatrix(&N, p, &p); if (!error) { N.f = -N.f; pdf_concatmatrix(&M, &N); - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); if (*p == ',') - for (++p; *p && isspace(*p); p++); + for (++p; *p && isspace((unsigned char)*p); p++); } } } @@ -751,7 +751,7 @@ spc_handler_html_default (struct spc_env *spe, struct spc_arg *ap) } pdf_release_obj(attr); - for ( ; ap->curptr < ap->endptr && isspace(ap->curptr[0]); ap->curptr++); + for ( ; ap->curptr < ap->endptr && isspace((unsigned char)ap->curptr[0]); ap->curptr++); return error; } @@ -783,7 +783,7 @@ cvt_a_to_tmatrix (pdf_tmatrix *M, const char *ptr, const char **nextptr) }; int k; - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); q = parse_c_ident(&p, p + strlen(p)); if (!q) @@ -793,10 +793,10 @@ cvt_a_to_tmatrix (pdf_tmatrix *M, const char *ptr, const char **nextptr) RELEASE(q); /* handle args */ - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); if (*p != '(' || *(p + 1) == 0) return -1; - for (++p; *p && isspace(*p); p++); + for (++p; *p && isspace((unsigned char)*p); p++); for (n = 0; n < 6 && *p && *p != ')'; n++) { q = parse_float_decimal(&p, p + strlen(p)); if (!q) @@ -805,9 +805,9 @@ cvt_a_to_tmatrix (pdf_tmatrix *M, const char *ptr, const char **nextptr) v[n] = atof(q); if (*p == ',') p++; - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); if (*p == ',') - for (++p; *p && isspace(*p); p++); + for (++p; *p && isspace((unsigned char)*p); p++); RELEASE(q); } } @@ -905,7 +905,7 @@ spc_html_check_special (const char *buffer, long size) p = buffer; endptr = p + size; - for ( ; p < endptr && isspace(*p); p++); + for ( ; p < endptr && isspace((unsigned char)*p); p++); size = (long) (endptr - p); if (size >= strlen("html:") && !memcmp(p, "html:", strlen("html:"))) { @@ -922,7 +922,7 @@ spc_html_setup_handler (struct spc_handler *sph, { ASSERT(sph && spe && ap); - for ( ; ap->curptr < ap->endptr && isspace(ap->curptr[0]); ap->curptr++); + for ( ; ap->curptr < ap->endptr && isspace((unsigned char)ap->curptr[0]); ap->curptr++); if (ap->curptr + strlen("html:") > ap->endptr || memcmp(ap->curptr, "html:", strlen("html:"))) { return -1; @@ -934,7 +934,7 @@ spc_html_setup_handler (struct spc_handler *sph, sph->exec = &spc_handler_html_default; ap->curptr += strlen("html:"); - for ( ; ap->curptr < ap->endptr && isspace(ap->curptr[0]); ap->curptr++); + for ( ; ap->curptr < ap->endptr && isspace((unsigned char)ap->curptr[0]); ap->curptr++); return 0; } diff --git a/Build/source/texk/dvipdfm-x/spc_misc.c b/Build/source/texk/dvipdfm-x/spc_misc.c index fcf1d39417e..eb0135a8eb8 100644 --- a/Build/source/texk/dvipdfm-x/spc_misc.c +++ b/Build/source/texk/dvipdfm-x/spc_misc.c @@ -174,7 +174,7 @@ spc_misc_setup_handler (struct spc_handler *handle, key = args->curptr; while (args->curptr < args->endptr && - isalpha(args->curptr[0])) { + isalpha((unsigned char)args->curptr[0])) { args->curptr++; } diff --git a/Build/source/texk/dvipdfm-x/specials.c b/Build/source/texk/dvipdfm-x/specials.c index 8419a1af310..b853f7e88d4 100644 --- a/Build/source/texk/dvipdfm-x/specials.c +++ b/Build/source/texk/dvipdfm-x/specials.c @@ -517,7 +517,7 @@ print_error (const char *name, struct spc_env *spe, struct spc_arg *ap) WARN(">> at page=\"%ld\" position=\"(%g, %g)\" (in PDF)", pg, c.x, c.y); } for (i = 0, p = ap->base; i < 63 && p < ap->endptr; p++) { - if (isprint(*p)) + if (isprint((unsigned char)*p)) ebuf[i++] = *p; else if (i + 4 < 63) i += sprintf(ebuf + i, "\\x%02x", (unsigned char)*p); @@ -533,7 +533,7 @@ print_error (const char *name, struct spc_env *spe, struct spc_arg *ap) if (ap->curptr < ap->endptr) { for (i = 0, p = ap->curptr; i < 63 && p < ap->endptr; p++) { - if (isprint(*p)) + if (isprint((unsigned char)*p)) ebuf[i++] = *p; else if (i + 4 < 63) i += sprintf(ebuf + i, "\\x%02x", (unsigned char)*p); diff --git a/Build/source/texk/dvipdfm-x/subfont.c b/Build/source/texk/dvipdfm-x/subfont.c index 6d8eaf5a8f2..09f20a0dc6e 100644 --- a/Build/source/texk/dvipdfm-x/subfont.c +++ b/Build/source/texk/dvipdfm-x/subfont.c @@ -173,8 +173,8 @@ read_sfd_record (struct sfd_rec_ *rec, const char *lbuf) int curpos = 0; int error = 0; -#define IS_TOKSEP(c) ((c) == '\0' || isspace((c))) - for ( ; *p && isspace(*p); p++); +#define IS_TOKSEP(c) ((c) == '\0' || isspace((unsigned char)(c))) + for ( ; *p && isspace((unsigned char)*p); p++); while (!error && *p) { repos = 0; q = p; v1 = strtol(p, &r, 0); @@ -233,7 +233,7 @@ read_sfd_record (struct sfd_rec_ *rec, const char *lbuf) rec->vector[curpos++] = (unsigned short) c; } } - for (p = q; *p && isspace(*p); p++); + for (p = q; *p && isspace((unsigned char)*p); p++); } return error; @@ -257,12 +257,12 @@ scan_sfd_file (struct sfd_file_ *sfd, FILE *fp) sfd->max_subfonts = sfd->num_subfonts = 0; while ((p = readline(line_buf, LINE_BUF_SIZE, fp)) != NULL) { lpos++; - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); if (*p == 0) continue; /* empty */ /* Saw non-wsp here */ - for (n = 0, q = p; *p && !isspace(*p); p++, n++); + for (n = 0, q = p; *p && !isspace((unsigned char)*p); p++, n++); id = NEW(n + 1, char); memcpy(id, q, n); id[n] = '\0'; if (sfd->num_subfonts >= sfd->max_subfonts) { @@ -400,12 +400,12 @@ sfd_load_record (const char *sfd_name, const char *subfont_id) /* Seek to record for 'sub_name'. */ while ((p = readline(line_buf, LINE_BUF_SIZE, fp))) { - for ( ; *p && isspace(*p); p++); + for ( ; *p && isspace((unsigned char)*p); p++); if (*p == 0) continue; /* empty line */ /* q = parse_ident(&p, p + strlen(p)); */ - for (q = p; *p && !isspace(*p); p++); + for (q = p; *p && !isspace((unsigned char)*p); p++); *p = '\0'; p++; if (!strcmp(q, subfont_id)) { if (num_sfd_records >= max_sfd_records) { -- cgit v1.2.3