aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-02-07 17:15:24 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-02-07 17:15:24 -0200
commite7a9c45a4847d3ce058ac0e6051308591e7caf00 (patch)
treea802304497cd206432adc56a4f5bd1ab979c22d2 /lvm.c
parentfd6c1f489862d8ecf7055ca18898fffd006711fa (diff)
downloadlua-e7a9c45a4847d3ce058ac0e6051308591e7caf00.tar.gz
lua-e7a9c45a4847d3ce058ac0e6051308591e7caf00.tar.bz2
lua-e7a9c45a4847d3ce058ac0e6051308591e7caf00.zip
trying to avoid assumption that sizeof(char)==1
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lvm.c b/lvm.c
index fc36e445..99339637 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.c,v 2.129 2011/02/01 18:32:55 roberto Exp roberto $ 2** $Id: lvm.c,v 2.130 2011/02/07 12:24:42 roberto Exp roberto $
3** Lua virtual machine 3** Lua virtual machine
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -288,14 +288,15 @@ void luaV_concat (lua_State *L, int total) {
288 /* collect total length */ 288 /* collect total length */
289 for (n = 1; n < total && tostring(L, top-n-1); n++) { 289 for (n = 1; n < total && tostring(L, top-n-1); n++) {
290 size_t l = tsvalue(top-n-1)->len; 290 size_t l = tsvalue(top-n-1)->len;
291 if (l >= MAX_SIZET - tl) luaG_runerror(L, "string length overflow"); 291 if (l >= (MAX_SIZET/sizeof(char)) - tl)
292 luaG_runerror(L, "string length overflow");
292 tl += l; 293 tl += l;
293 } 294 }
294 buffer = luaZ_openspace(L, &G(L)->buff, tl); 295 buffer = luaZ_openspace(L, &G(L)->buff, tl);
295 tl = 0; 296 tl = 0;
296 for (i=n; i>0; i--) { /* concat all strings */ 297 for (i=n; i>0; i--) { /* concat all strings */
297 size_t l = tsvalue(top-i)->len; 298 size_t l = tsvalue(top-i)->len;
298 memcpy(buffer+tl, svalue(top-i), l); 299 memcpy(buffer+tl, svalue(top-i), l * sizeof(char));
299 tl += l; 300 tl += l;
300 } 301 }
301 setsvalue2s(L, top-n, luaS_newlstr(L, buffer, tl)); 302 setsvalue2s(L, top-n, luaS_newlstr(L, buffer, tl));