aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lvm.c b/lvm.c
index e8c2e962..cd992aad 100644
--- a/lvm.c
+++ b/lvm.c
@@ -656,8 +656,10 @@ void luaV_concat (lua_State *L, int total) {
656 /* collect total length and number of strings */ 656 /* collect total length and number of strings */
657 for (n = 1; n < total && tostring(L, s2v(top - n - 1)); n++) { 657 for (n = 1; n < total && tostring(L, s2v(top - n - 1)); n++) {
658 size_t l = vslen(s2v(top - n - 1)); 658 size_t l = vslen(s2v(top - n - 1));
659 if (l_unlikely(l >= (MAX_SIZE/sizeof(char)) - tl)) 659 if (l_unlikely(l >= (MAX_SIZE/sizeof(char)) - tl)) {
660 L->top = top - total; /* pop strings to avoid wasting stack */
660 luaG_runerror(L, "string length overflow"); 661 luaG_runerror(L, "string length overflow");
662 }
661 tl += l; 663 tl += l;
662 } 664 }
663 if (tl <= LUAI_MAXSHORTLEN) { /* is result a short string? */ 665 if (tl <= LUAI_MAXSHORTLEN) { /* is result a short string? */
@@ -672,7 +674,7 @@ void luaV_concat (lua_State *L, int total) {
672 setsvalue2s(L, top - n, ts); /* create result */ 674 setsvalue2s(L, top - n, ts); /* create result */
673 } 675 }
674 total -= n-1; /* got 'n' strings to create 1 new */ 676 total -= n-1; /* got 'n' strings to create 1 new */
675 L->top -= n-1; /* popped 'n' strings and pushed one */ 677 L->top = top - (n - 1); /* popped 'n' strings and pushed one */
676 } while (total > 1); /* repeat until only 1 result left */ 678 } while (total > 1); /* repeat until only 1 result left */
677} 679}
678 680