The C language has this oddity that octal constants are 3 bytes so the sequence
"\0101" is two bytes and well defined by the langage. cc65 currently misparses
this as a 1 byte octal code. Add a count to fix this.
Signed-off-by: Alan Cox <etchedpixels@gmail.com>
{
int C;
int HadError;
+ int Count;
/* Check for escape chars */
if (CurC == '\\') {
case '7':
/* Octal constant */
HadError = 0;
+ Count = 1;
C = HexVal (CurC);
- while (IsODigit (NextC)) {
+ while (IsODigit (NextC) && Count++ < 3) {
if ((C << 3) >= 256) {
if (!HadError) {
Error ("Octal character constant out of range");