diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-06-19 11:14:35 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-06-19 11:14:35 +0000 |
commit | e5b8a1a0369901d3d73384cf553619d9351679aa (patch) | |
tree | a0b0d02bb0421b6f6f1dce118d40dfe6e91147b6 /Build/source/texk/dvipsk | |
parent | a7803f3483864a647563ebda46f5fa39a92bb205 (diff) |
texk/*/, utils/*/: Avoid undefined behaviour when char is signed
git-svn-id: svn://tug.org/texlive/trunk@34310 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipsk')
-rw-r--r-- | Build/source/texk/dvipsk/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/texk/dvipsk/afm2tfm.c | 2 | ||||
-rw-r--r-- | Build/source/texk/dvipsk/dospecial.c | 4 | ||||
-rw-r--r-- | Build/source/texk/dvipsk/emspecial.c | 28 | ||||
-rw-r--r-- | Build/source/texk/dvipsk/resident.c | 2 | ||||
-rw-r--r-- | Build/source/texk/dvipsk/writet1.c | 4 |
6 files changed, 25 insertions, 20 deletions
diff --git a/Build/source/texk/dvipsk/ChangeLog b/Build/source/texk/dvipsk/ChangeLog index b20cd49c960..f48fa8e99a3 100644 --- a/Build/source/texk/dvipsk/ChangeLog +++ b/Build/source/texk/dvipsk/ChangeLog @@ -1,3 +1,8 @@ +2014-06-19 Peter Breitenlohner <peb@mppmu.mpg.de> + + * afm2tfm.c, dospecial.c, emspecial.c, resident.c, writet1.c: + Avoid undefined behaviour when char is signed. + 2014-06-16 Peter Breitenlohner <peb@mppmu.mpg.de> * {,squeeze/}Makefile.am: Drop the obsolete ACLOCAL_AMFLAGS. diff --git a/Build/source/texk/dvipsk/afm2tfm.c b/Build/source/texk/dvipsk/afm2tfm.c index ec6b219b7d6..e57417b5a09 100644 --- a/Build/source/texk/dvipsk/afm2tfm.c +++ b/Build/source/texk/dvipsk/afm2tfm.c @@ -826,7 +826,7 @@ upmap(void) { /* Compute uppercase mapping, when making a small caps font */ Looks like we should use isupper to me --karl. */ for (Ai=adobechars; Ai; Ai=Ai->next) { p = Ai->adobename; - if (isupper (*p)) { + if (isupper ((unsigned char)*p)) { q = lwr; for (; *p; p++) *q++ = TOLOWER (*p); diff --git a/Build/source/texk/dvipsk/dospecial.c b/Build/source/texk/dvipsk/dospecial.c index 9986ec83daa..b295c643e5d 100644 --- a/Build/source/texk/dvipsk/dospecial.c +++ b/Build/source/texk/dvipsk/dospecial.c @@ -787,7 +787,7 @@ case 'h': if (strncmp(p, "html:", 5)==0) { if (! HPS_FLAG) return; p += 5; - while (isspace(*p)) + while (isspace((unsigned char)*p)) p++; if (*p == '<') { char *sp = p; @@ -802,7 +802,7 @@ case 'h': strncpy(str,sp+1,ii-1); str[ii-1] = 0;len=strlen(str); if(len>6) lower_len=6; else lower_len=len; - for(ii=0;ii<lower_len;ii++) str[ii]=tolower(str[ii]); + for(ii=0;ii<lower_len;ii++) str[ii]=tolower((unsigned char)str[ii]); do_html(str); free(str); } else diff --git a/Build/source/texk/dvipsk/emspecial.c b/Build/source/texk/dvipsk/emspecial.c index c4ef067f2cc..3210a8a2639 100644 --- a/Build/source/texk/dvipsk/emspecial.c +++ b/Build/source/texk/dvipsk/emspecial.c @@ -146,10 +146,10 @@ char emstr[500]; char *emp; hvpos(); - for (emp = p+3; *emp && isspace(*emp); emp++); /* skip blanks */ + for (emp = p+3; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ if (strncmp(emp, "linewidth", 9) == 0) { /* code for linewidth */ - for (emp = emp+9; *emp && isspace(*emp); emp++); /* skip blanks */ + for (emp = emp+9; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ sscanf(emp, "%f%2s", &emwidth, emunit); emwidth = emunits(emwidth,emunit); if (emwidth!=-1.0) { @@ -204,7 +204,7 @@ char *emp; emused = TRUE; emclear(); } - for (emp = emp+5; *emp && isspace(*emp); emp++); /* skip blanks */ + for (emp = emp+5; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ empoint1 = (shalfword)atoi(emp); empoint = emptput(empoint1,hh,vv); #ifdef DEBUG @@ -218,20 +218,20 @@ char *emp; #endif } else if (strncmp(emp, "line", 4) == 0) { - for (emp = emp+4; *emp && isspace(*emp); emp++); /* skip blanks */ + for (emp = emp+4; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ empoint1 = (shalfword)atoi(emp); - for (; *emp && isdigit(*emp); emp++); /* skip point 1 */ + for (; *emp && isdigit((unsigned char)*emp); emp++); /* skip point 1 */ if ( *emp && strchr("hvp",*emp)!=0 ) emp++; /* skip line cut */ - for (; *emp && isspace(*emp); emp++); /* skip blanks */ + for (; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ if ( *emp && (*emp==',') ) emp++; /* skip comma separator */ - for (; *emp && isspace(*emp); emp++); /* skip blanks */ + for (; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ empoint2 = (shalfword)atoi(emp); - for (; *emp && isdigit(*emp); emp++); /* skip point 2 */ + for (; *emp && isdigit((unsigned char)*emp); emp++); /* skip point 2 */ if ( *emp && strchr("hvp",*emp)!=0 ) emp++; /* skip line cut */ - for (; *emp && isspace(*emp); emp++); /* skip blanks */ + for (; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ if ( *emp && (*emp==',') ) emp++; /* skip comma separator */ emwidth = -1.0; @@ -274,8 +274,8 @@ char *emp; } else if (strncmp(emp, "graph", 5) == 0) { int i; - for (emp = emp+5; *emp && isspace(*emp); emp++); /* skip blanks */ - for (i=0; *emp && !isspace(*emp) && !(*emp==','); emp++) { + for (emp = emp+5; *emp && isspace((unsigned char)*emp); emp++); /* skip blanks */ + for (i=0; *emp && !isspace((unsigned char)*emp) && !(*emp==','); emp++) { if (strlen(emstr) - 2 >= sizeof(emstr)) { fprintf(stderr, "em:graph: special too long, truncating\n"); break; @@ -285,14 +285,14 @@ char *emp; emstr[i] = '\0'; /* now get optional width and height */ emwidth = emheight = -1.0; /* no dimension is <= 0 */ - for (; *emp && ( isspace(*emp) || (*emp==',') ); emp++) + for (; *emp && ( isspace((unsigned char)*emp) || (*emp==',') ); emp++) ; /* skip blanks and comma */ if (*emp) { sscanf(emp, "%f%2s", &emwidth, emunit); /* read width */ emwidth = emunits(emwidth,emunit); /* convert to pixels */ - for (; *emp && (*emp=='.'||isdigit(*emp)||isalpha(*emp)); emp++) + for (; *emp && (*emp=='.'||isdigit((unsigned char)*emp)||isalpha((unsigned char)*emp)); emp++) ; /* skip width dimension */ - for (; *emp && ( isspace(*emp) || (*emp==',') ); emp++) + for (; *emp && ( isspace((unsigned char)*emp) || (*emp==',') ); emp++) ; /* skip blanks and comma */ if (*emp) { sscanf(emp, "%f%2s", &emheight, emunit); /* read height */ diff --git a/Build/source/texk/dvipsk/resident.c b/Build/source/texk/dvipsk/resident.c index 2212fe7b554..a7b496d8cda 100644 --- a/Build/source/texk/dvipsk/resident.c +++ b/Build/source/texk/dvipsk/resident.c @@ -642,7 +642,7 @@ case 'R': lastresortsizes[i] = 32000; #else /* KPATHSEA */ for (p = was_inline + 1; *p; p++) { - if (isblank (*p)) { + if (isblank ((unsigned char)*p)) { *p = ':'; } } diff --git a/Build/source/texk/dvipsk/writet1.c b/Build/source/texk/dvipsk/writet1.c index cf4e32e3fdd..460c477c5f5 100644 --- a/Build/source/texk/dvipsk/writet1.c +++ b/Build/source/texk/dvipsk/writet1.c @@ -479,7 +479,7 @@ static float t1_scan_num(char *p, char **r) pdftex_fail("a number expected: `%s'", t1_line_array); } if (r != NULL) { - for (; isdigit(*p) || *p == '.' || + for (; isdigit((unsigned char)*p) || *p == '.' || *p == 'e' || *p == 'E' || *p == '+' || *p == '-'; p++); *r = p; } @@ -1329,7 +1329,7 @@ static void t1_flush_cs(boolean is_subr) t1_line_ptr = t1_line_array; for (p = start_line; p - start_line < size_pos;) *t1_line_ptr++ = *p++; - while (isdigit(*p)) + while (isdigit((unsigned char)*p)) p++; sprintf(t1_line_ptr, "%u", count); strcat(t1_line_ptr, p); |