pull/216/head
Dibyendu Majumdar 3 years ago
parent 5c30d255c7
commit 88ccaf34a0

@ -1182,30 +1182,30 @@ static void constructor (LexState *ls, expdesc *t) {
* be anchored somewhere else by the time parsing finishes * be anchored somewhere else by the time parsing finishes
*/ */
static TString *user_defined_type_name(LexState *ls, TString *typename) { static TString *user_defined_type_name(LexState *ls, TString *typename) {
size_t len = 0; size_t len = 0;
if (testnext(ls, '.')) { if (testnext(ls, '.')) {
char buffer[128] = { 0 }; char buffer[128] = {0};
const char *str = getstr(typename); const char *str = getstr(typename);
len = strlen(str); len = strlen(str);
if (len >= sizeof buffer) { if (len >= sizeof buffer) {
luaX_syntaxerror(ls, "User defined type name is too long"); luaX_syntaxerror(ls, "User defined type name is too long");
return typename; return typename;
} }
snprintf(buffer, sizeof buffer, "%s", str); snprintf(buffer, sizeof buffer, "%s", str);
do { do {
typename = str_checkname(ls); typename = str_checkname(ls);
str = getstr(typename); str = getstr(typename);
size_t newlen = len + strlen(str) + 1; size_t newlen = len + strlen(str) + 1;
if (newlen >= sizeof buffer) { if (newlen >= sizeof buffer) {
luaX_syntaxerror(ls, "User defined type name is too long"); luaX_syntaxerror(ls, "User defined type name is too long");
return typename; return typename;
} }
snprintf(buffer + len, sizeof buffer - len, ".%s", str); snprintf(buffer + len, sizeof buffer - len, ".%s", str);
len = newlen; len = newlen;
} while (testnext(ls, '.')); } while (testnext(ls, '.'));
typename = luaX_newstring(ls, buffer, strlen(buffer)); typename = luaX_newstring(ls, buffer, strlen(buffer));
} }
return typename; return typename;
} }
/* RAVI Parse /* RAVI Parse

Loading…
Cancel
Save