Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 27 additions & 9 deletions source/compiler/sc2.c
Original file line number Diff line number Diff line change
Expand Up @@ -1964,6 +1964,7 @@ static const unsigned char *unpackedstring(const unsigned char *lptr,int *flags)
{
const unsigned char *stringize;
int instring=1;
int brackets=0;
if (*flags & STRINGIZE) /* ignore leading spaces after the # */
while (*lptr==' ' || *lptr=='\t') /* this is as defines with parameters may add them */
lptr++; /* when you use a space after , in a match pattern */
Expand All @@ -1980,6 +1981,7 @@ static const unsigned char *unpackedstring(const unsigned char *lptr,int *flags)
lptr--;
instring=1;
*flags |= STRINGIZE;
brackets=0;
} else if (*lptr==')' || *lptr==',' || *lptr=='}' || *lptr==';' ||
*lptr==':' || *lptr=='\r' || *lptr=='\n') {
break;
Expand All @@ -1996,17 +1998,24 @@ static const unsigned char *unpackedstring(const unsigned char *lptr,int *flags)
stringize++; /* find next non space */
if (*stringize=='#') { /* new stringize string */
lptr=stringize+1;
brackets=0;
while (*lptr==' ' || *lptr=='\t')
lptr++;
continue;
} else if (*stringize=='\"') { /* new string */
lptr=stringize+1;
lptr = stringize + 1;
*flags &= ~STRINGIZE;
continue;
} else if (*stringize==',' || *stringize==')' || *stringize=='}' ||
*stringize==';') { /* end */
lptr=stringize;
break;
} else if (*stringize=='(') {
brackets++;
} else if (*stringize==')') {
if (brackets--==0)
break;
} else if (*stringize==',' || *stringize=='}' || *stringize==';') { /* end */
if (brackets==0) {
lptr=stringize;
break;
}
} else if (*stringize=='\0') {
lptr=stringize;
*flags &= ~STRINGIZE; /* shouldn't happen - trigger an error */
Expand Down Expand Up @@ -2035,6 +2044,7 @@ static const unsigned char *packedstring(const unsigned char *lptr,int *flags)
ucell val,c;
const unsigned char *stringize;
int instring=1;
int brackets=0;
if (*flags & STRINGIZE)
while (*lptr==' ' || *lptr=='\t')
lptr++;
Expand All @@ -2053,6 +2063,7 @@ static const unsigned char *packedstring(const unsigned char *lptr,int *flags)
while (*++lptr==' ' || *lptr=='\t');
lptr--;
instring=1;
brackets=0;
*flags |= STRINGIZE;
} else if (*lptr==')' || *lptr==',' || *lptr=='}' || *lptr==';' ||
*lptr==':' || *lptr=='\r' || *lptr=='\n') {
Expand All @@ -2070,17 +2081,24 @@ static const unsigned char *packedstring(const unsigned char *lptr,int *flags)
stringize++; /* find next non space */
if (*stringize=='#') { /* new stringize string */
lptr=stringize+1;
brackets=0;
while (*lptr==' ' || *lptr=='\t')
lptr++;
continue;
} else if (*stringize=='\"') { /* new string */
lptr=stringize+1;
*flags &= ~STRINGIZE;
continue;
} else if (*stringize==',' || *stringize==')' || *stringize=='}' ||
*stringize==';') { /* end */
lptr=stringize;
break;
} else if (*stringize=='(') {
brackets++;
} else if (*stringize==')') {
if (brackets--==0)
break;
} else if (*stringize==',' || *stringize=='}' || *stringize==';') { /* end */
if (brackets==0) {
lptr=stringize;
break;
}
} else if (*stringize=='\0') {
lptr=stringize;
*flags &= ~STRINGIZE; /* shouldn't happen - trigger an error */
Expand Down