Let parser recognize "_" and don't lock up if encountering an invalid character.

Patch provided by Marcelo Roberto Jimenez <mroberto@cetuc.puc-rio.br>.

svn path=/trunk/kdebase/konsole/; revision=131474
wilder-portage
Stephan Binner 25 years ago
parent da3925950e
commit 81b521357c
  1. 24
      konsole/keytrans.cpp

@ -201,31 +201,30 @@ void KeytabReader::getSymbol()
scolno = colno;
if (cc <= 0)
{
sym = SYMEof; return; // eos
sym = SYMEof; // eos
}
if (cc == '\n')
else if (cc == '\n')
{
getCc();
sym = SYMEol; return; // eol
sym = SYMEol; // eol
}
if (inRange('A',cc,'Z')||inRange('a',cc,'z')||inRange('0',cc,'9'))
else if (inRange('A',cc,'Z')||inRange('a',cc,'z')||inRange('0',cc,'9')||(cc=='_'))
{
while (inRange('A',cc,'Z') || inRange('a',cc,'z') || inRange('0',cc,'9'))
while (inRange('A',cc,'Z') || inRange('a',cc,'z') || inRange('0',cc,'9') || (cc=='_'))
{
res = res + (char)cc;
getCc();
}
sym = SYMName;
return;
}
if (strchr("+-:",cc))
else if (strchr("+-:",cc))
{
res = "";
res = res + (char)cc;
getCc();
sym = SYMOpr; return;
sym = SYMOpr;
}
if (cc == '"')
else if (cc == '"')
{
getCc();
while (cc >= ' ' && cc != '"')
@ -261,7 +260,12 @@ void KeytabReader::getSymbol()
}
if (cc != '"') return;
getCc();
sym = SYMString; return;
sym = SYMString;
}
else
{
// cc was an invalid char. Get next cc or we will loop forever.
getCc();
}
}

Loading…
Cancel
Save