diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index ceb763764..454a0ae1a 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -4281,10 +4281,15 @@ static int get_number_terminals(char *c) /* QXXXXXXX NC NB NE MNAME * */ /* 12 tokens maximum */ + { + char* cc, * ccfree; i = j = 0; - while ((i < 12) && (*c != '\0')) { - char *comma; - name[i] = gettok_instance(&c); + cc = copy(c); + /* required to make m= 1 a single token m=1 */ + ccfree = cc = inp_remove_ws(cc); + while ((i < 12) && (*cc != '\0')) { + char* comma; + name[i] = gettok_instance(&cc); if (strstr(name[i], "off") || strchr(name[i], '=')) j++; #ifdef CIDER @@ -4302,11 +4307,12 @@ static int get_number_terminals(char *c) j++; i++; } + tfree(ccfree); i--; area_found = FALSE; for (k = i; k > i - j - 1; k--) { bool only_digits = TRUE; - char *nametmp = name[k]; + char* nametmp = name[k]; /* MNAME has to contain at least one alpha character. AREA may be assumed if we have a token with only digits, and where the previous token does not end with a ',' */ @@ -4327,6 +4333,7 @@ static int get_number_terminals(char *c) return i - j - 1; } break; + } default: return 0; break;