From dda4eb3a58a3f213ac2478b3905be55134443cdc Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Wed, 18 Feb 2015 16:36:42 -0600 Subject: [PATCH] Fix more MS idiocy Windows has signed characters, but if you pass a negative value (i.e. a character with value >= 0x80) into the debug version of its isprint() runtime library function it asserts. --- src/libCom/misc/epicsString.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libCom/misc/epicsString.c b/src/libCom/misc/epicsString.c index 4ee9fed35..2ce13be6d 100644 --- a/src/libCom/misc/epicsString.c +++ b/src/libCom/misc/epicsString.c @@ -88,7 +88,7 @@ int epicsStrnRawFromEscaped(char *to, size_t outsize, const char *from, pfrom++; /*skip the x*/ for (i=0; i<2; i++) { - if (!isxdigit((int)*pfrom)) break; + if (!isxdigit(0xff & (int)*pfrom)) break; strval[i] = *pfrom++; nfrom++; } sscanf(strval,"%x",&ival); @@ -131,7 +131,7 @@ int epicsStrnEscapedFromRaw(char *outbuf, size_t outsize, const char *inbuf, case '\'': len = epicsSnprintf(outpos, maxout, "\\'"); break; case '\"': len = epicsSnprintf(outpos, maxout, "\\\""); break; default: - if (isprint((int)c)) + if (isprint(0xff & (int)c)) len = epicsSnprintf(outpos, maxout, "%c", c); else len = epicsSnprintf(outpos, maxout, "\\%03o", @@ -166,7 +166,7 @@ size_t epicsStrnEscapedFromRawSize(const char *inbuf, size_t inlen) nout++; break; default: - if (!isprint((int)c)) + if (!isprint(0xff & (int)c)) nout += 3; } } @@ -230,7 +230,7 @@ int epicsStrPrintEscaped(FILE *fp, const char *s, size_t len) case '\'': nout += fprintf(fp, "\\'"); break; case '\"': nout += fprintf(fp, "\\\""); break; default: - if (isprint((int)c)) + if (isprint(0xff & (int)c)) nout += fprintf(fp, "%c", c); else nout += fprintf(fp, "\\%03o", (unsigned char)c);