use Py_CHARMASK

This commit is contained in:
Guido van Rossum 1995-02-10 17:01:56 +00:00
parent 760dd1031a
commit 7f7f274839
5 changed files with 27 additions and 22 deletions

View file

@ -753,7 +753,8 @@ eval_code(co, globals, locals, owner, arg)
/* XXX move into writeobject() ? */
char *s = getstringvalue(v);
int len = getstringsize(v);
if (len > 0 && isspace(s[len-1]) &&
if (len > 0 &&
isspace(Py_CHARMASK(s[len-1])) &&
s[len-1] != ' ')
softspace(w, 0);
}

View file

@ -608,12 +608,12 @@ parsestr(s)
*p++ = c;
break;
case 'x':
if (isxdigit(*s)) {
if (isxdigit(Py_CHARMASK(*s))) {
sscanf(s, "%x", &c);
*p++ = c;
do {
s++;
} while (isxdigit(*s));
} while (isxdigit(Py_CHARMASK(*s)));
break;
}
/* FALLTHROUGH */

View file

@ -26,6 +26,14 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "config.h"
#endif
/* Convert a possibly signed character to a nonnegative int */
/* XXX This assumes characters are 8 bits wide */
#ifdef __CHAR_UNSIGNED__
#define Py_CHARMASK(c) (c)
#else
#define Py_CHARMASK(c) ((c) & 0xff)
#endif
#include "rename2.h"
/* strtol and strtoul, renamed to avoid conflicts */
@ -70,7 +78,7 @@ int base;
}
/* skip leading white space */
while (*str && isspace(*str))
while (*str && isspace(Py_CHARMASK(*str)))
str++;
/* check for leading 0 or 0x for auto-base or base 16 */
@ -99,7 +107,7 @@ int base;
}
/* do the conversion */
while (c = *str)
while (c = Py_CHARMASK(*str))
{
if (isdigit(c) && c - '0' < base)
c -= '0';
@ -143,7 +151,7 @@ int base;
long result;
char sign;
while (*str && isspace(*str))
while (*str && isspace(Py_CHARMASK(*str)))
str++;
sign = *str;