diff --git a/src/ioc/dbStatic/dbLex.l b/src/ioc/dbStatic/dbLex.l index c06a99242..681cb1f24 100644 --- a/src/ioc/dbStatic/dbLex.l +++ b/src/ioc/dbStatic/dbLex.l @@ -73,15 +73,20 @@ static int yyreset(void) {whitespace} ; {doublequote}({stringchar}|{escape})*{newline} { /* bad string */ - yyerror("Newline in string, closing quote missing"); + yyerrorAbort("Newline in string, closing quote missing"); } . { char message[40]; YY_BUFFER_STATE *dummy=0; - sprintf(message,"Invalid character '%c'",yytext[0]); - yyerror(message); + if (isprint((int) yytext[0])) { + sprintf(message, "Invalid character '%c'", yytext[0]); + } + else { + sprintf(message, "Invalid character 0x%2.2x", yytext[0]); + } + yyerrorAbort(message); /*The following suppresses compiler warning messages*/ if(FALSE) yyunput('c',(unsigned char *) message); if(FALSE) yy_switch_to_buffer(*dummy); diff --git a/src/ioc/dbStatic/dbLexRoutines.c b/src/ioc/dbStatic/dbLexRoutines.c index 39124289e..f5ead7a7b 100644 --- a/src/ioc/dbStatic/dbLexRoutines.c +++ b/src/ioc/dbStatic/dbLexRoutines.c @@ -12,6 +12,7 @@ /*The routines in this module are serially reusable NOT reentrant*/ +#include #include #include #include diff --git a/src/ioc/dbStatic/dbStaticLib.c b/src/ioc/dbStatic/dbStaticLib.c index e6b8d3098..d9b02b670 100644 --- a/src/ioc/dbStatic/dbStaticLib.c +++ b/src/ioc/dbStatic/dbStaticLib.c @@ -604,7 +604,10 @@ DBENTRY * dbAllocEntry(dbBase *pdbbase) void dbFreeEntry(DBENTRY *pdbentry) { - if(pdbentry->message) free((void *)pdbentry->message); + if (!pdbentry) + return; + if (pdbentry->message) + free((void *)pdbentry->message); dbmfFree(pdbentry); }