isspace() handles characters in range 0-255 only
This commit is contained in:
parent
178bc946e3
commit
8aab369f4e
|
@ -621,6 +621,18 @@ void LEXER::ThrowIOError( wxString aText, int charOffset ) throw (IOError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function isspace
|
||||||
|
* strips the upper bits of the int to ensure the value passed to ::isspace() is
|
||||||
|
* in the range of 0-255
|
||||||
|
*/
|
||||||
|
static inline bool isSpace( int cc )
|
||||||
|
{
|
||||||
|
// make sure int passed to ::isspace() is 0-255
|
||||||
|
return ::isspace( cc & 0xff );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DSN_T LEXER::NextTok() throw (IOError)
|
DSN_T LEXER::NextTok() throw (IOError)
|
||||||
{
|
{
|
||||||
char* cur = next;
|
char* cur = next;
|
||||||
|
@ -643,7 +655,7 @@ L_read:
|
||||||
cur = start;
|
cur = start;
|
||||||
|
|
||||||
// skip leading whitespace
|
// skip leading whitespace
|
||||||
while( cur<limit && isspace(*cur) )
|
while( cur<limit && isSpace(*cur) )
|
||||||
++cur;
|
++cur;
|
||||||
|
|
||||||
// if the first non-blank character is #, this line is a comment.
|
// if the first non-blank character is #, this line is a comment.
|
||||||
|
@ -653,7 +665,7 @@ L_read:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// skip leading whitespace
|
// skip leading whitespace
|
||||||
while( cur<limit && isspace(*cur) )
|
while( cur<limit && isSpace(*cur) )
|
||||||
++cur;
|
++cur;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -681,7 +693,7 @@ L_read:
|
||||||
|
|
||||||
head = cur+1;
|
head = cur+1;
|
||||||
|
|
||||||
if( head<limit && *head!=')' && *head!='(' && !isspace(*head) )
|
if( head<limit && *head!=')' && *head!='(' && !isSpace(*head) )
|
||||||
{
|
{
|
||||||
ThrowIOError( errtxt, CurOffset() );
|
ThrowIOError( errtxt, CurOffset() );
|
||||||
}
|
}
|
||||||
|
@ -714,7 +726,7 @@ L_read:
|
||||||
like: U2-14 or "U2"-"14"
|
like: U2-14 or "U2"-"14"
|
||||||
This is detectable by a non-space immediately preceeding the dash.
|
This is detectable by a non-space immediately preceeding the dash.
|
||||||
*/
|
*/
|
||||||
if( *cur == '-' && cur>start && !isspace( cur[-1] ) )
|
if( *cur == '-' && cur>start && !isSpace( cur[-1] ) )
|
||||||
{
|
{
|
||||||
head = cur+1;
|
head = cur+1;
|
||||||
curText.clear();
|
curText.clear();
|
||||||
|
@ -730,7 +742,7 @@ L_read:
|
||||||
while( head<limit && strchr( ".0123456789", *head ) )
|
while( head<limit && strchr( ".0123456789", *head ) )
|
||||||
++head;
|
++head;
|
||||||
|
|
||||||
if( (head<limit && isspace(*head)) || *head==')' || *head=='(' || head==limit )
|
if( (head<limit && isSpace(*head)) || *head==')' || *head=='(' || head==limit )
|
||||||
{
|
{
|
||||||
curText.clear();
|
curText.clear();
|
||||||
curText.append( cur, head );
|
curText.append( cur, head );
|
||||||
|
@ -770,7 +782,7 @@ L_read:
|
||||||
// call it a T_SYMBOL.
|
// call it a T_SYMBOL.
|
||||||
{
|
{
|
||||||
head = cur+1;
|
head = cur+1;
|
||||||
while( head<limit && !isspace( *head ) && *head!=')' && *head!='(' )
|
while( head<limit && !isSpace( *head ) && *head!=')' && *head!='(' )
|
||||||
++head;
|
++head;
|
||||||
|
|
||||||
curText.clear();
|
curText.clear();
|
||||||
|
|
Loading…
Reference in New Issue