aboutsummaryrefslogtreecommitdiff
path: root/lstrlib.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2015-03-28 16:14:47 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2015-03-28 16:14:47 -0300
commite723c75c02a48d0c766f1f30f7a321f7fdb239dc (patch)
treeaa3f11828e25ccf2dc02d077e59ee12a4313a3bd /lstrlib.c
parentb436ed58a3416c2e1936bdce880ac09925401a87 (diff)
downloadlua-e723c75c02a48d0c766f1f30f7a321f7fdb239dc.tar.gz
lua-e723c75c02a48d0c766f1f30f7a321f7fdb239dc.tar.bz2
lua-e723c75c02a48d0c766f1f30f7a321f7fdb239dc.zip
details (avoid 'lint' warnings)
Diffstat (limited to 'lstrlib.c')
-rw-r--r--lstrlib.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/lstrlib.c b/lstrlib.c
index 28c2bf28..3fc5be98 100644
--- a/lstrlib.c
+++ b/lstrlib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lstrlib.c,v 1.225 2015/02/05 17:50:24 roberto Exp roberto $ 2** $Id: lstrlib.c,v 1.226 2015/02/09 18:05:46 roberto Exp roberto $
3** Standard library for string operations and pattern-matching 3** Standard library for string operations and pattern-matching
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -70,7 +70,7 @@ static int str_sub (lua_State *L) {
70 if (start < 1) start = 1; 70 if (start < 1) start = 1;
71 if (end > (lua_Integer)l) end = l; 71 if (end > (lua_Integer)l) end = l;
72 if (start <= end) 72 if (start <= end)
73 lua_pushlstring(L, s + start - 1, (size_t)(end - start + 1)); 73 lua_pushlstring(L, s + start - 1, (size_t)(end - start) + 1);
74 else lua_pushliteral(L, ""); 74 else lua_pushliteral(L, "");
75 return 1; 75 return 1;
76} 76}
@@ -149,9 +149,9 @@ static int str_byte (lua_State *L) {
149 if (posi < 1) posi = 1; 149 if (posi < 1) posi = 1;
150 if (pose > (lua_Integer)l) pose = l; 150 if (pose > (lua_Integer)l) pose = l;
151 if (posi > pose) return 0; /* empty interval; return no values */ 151 if (posi > pose) return 0; /* empty interval; return no values */
152 n = (int)(pose - posi + 1); 152 if (pose - posi >= INT_MAX) /* arithmetic overflow? */
153 if (posi + n <= pose) /* arithmetic overflow? */
154 return luaL_error(L, "string slice too long"); 153 return luaL_error(L, "string slice too long");
154 n = (int)(pose - posi) + 1;
155 luaL_checkstack(L, n, "string slice too long"); 155 luaL_checkstack(L, n, "string slice too long");
156 for (i=0; i<n; i++) 156 for (i=0; i<n; i++)
157 lua_pushinteger(L, uchar(s[posi+i-1])); 157 lua_pushinteger(L, uchar(s[posi+i-1]));
@@ -499,7 +499,7 @@ static const char *match (MatchState *ms, const char *s, const char *p) {
499 } 499 }
500 case '+': /* 1 or more repetitions */ 500 case '+': /* 1 or more repetitions */
501 s++; /* 1 match already done */ 501 s++; /* 1 match already done */
502 /* go through */ 502 /* FALLTHROUGH */
503 case '*': /* 0 or more repetitions */ 503 case '*': /* 0 or more repetitions */
504 s = max_expand(ms, s, p, ep); 504 s = max_expand(ms, s, p, ep);
505 break; 505 break;
@@ -554,7 +554,7 @@ static void push_onecapture (MatchState *ms, int i, const char *s,
554 ptrdiff_t l = ms->capture[i].len; 554 ptrdiff_t l = ms->capture[i].len;
555 if (l == CAP_UNFINISHED) luaL_error(ms->L, "unfinished capture"); 555 if (l == CAP_UNFINISHED) luaL_error(ms->L, "unfinished capture");
556 if (l == CAP_POSITION) 556 if (l == CAP_POSITION)
557 lua_pushinteger(ms->L, ms->capture[i].init - ms->src_init + 1); 557 lua_pushinteger(ms->L, (ms->capture[i].init - ms->src_init) + 1);
558 else 558 else
559 lua_pushlstring(ms->L, ms->capture[i].init, l); 559 lua_pushlstring(ms->L, ms->capture[i].init, l);
560 } 560 }
@@ -598,8 +598,8 @@ static int str_find_aux (lua_State *L, int find) {
598 /* do a plain search */ 598 /* do a plain search */
599 const char *s2 = lmemfind(s + init - 1, ls - (size_t)init + 1, p, lp); 599 const char *s2 = lmemfind(s + init - 1, ls - (size_t)init + 1, p, lp);
600 if (s2) { 600 if (s2) {
601 lua_pushinteger(L, s2 - s + 1); 601 lua_pushinteger(L, (s2 - s) + 1);
602 lua_pushinteger(L, s2 - s + lp); 602 lua_pushinteger(L, (s2 - s) + lp);
603 return 2; 603 return 2;
604 } 604 }
605 } 605 }
@@ -621,7 +621,7 @@ static int str_find_aux (lua_State *L, int find) {
621 lua_assert(ms.matchdepth == MAXCCALLS); 621 lua_assert(ms.matchdepth == MAXCCALLS);
622 if ((res=match(&ms, s1, p)) != NULL) { 622 if ((res=match(&ms, s1, p)) != NULL) {
623 if (find) { 623 if (find) {
624 lua_pushinteger(L, s1 - s + 1); /* start */ 624 lua_pushinteger(L, (s1 - s) + 1); /* start */
625 lua_pushinteger(L, res - s); /* end */ 625 lua_pushinteger(L, res - s); /* end */
626 return push_captures(&ms, NULL, 0) + 2; 626 return push_captures(&ms, NULL, 0) + 2;
627 } 627 }
@@ -935,8 +935,8 @@ static const char *scanformat (lua_State *L, const char *strfrmt, char *form) {
935 if (isdigit(uchar(*p))) 935 if (isdigit(uchar(*p)))
936 luaL_error(L, "invalid format (width or precision too long)"); 936 luaL_error(L, "invalid format (width or precision too long)");
937 *(form++) = '%'; 937 *(form++) = '%';
938 memcpy(form, strfrmt, (p - strfrmt + 1) * sizeof(char)); 938 memcpy(form, strfrmt, ((p - strfrmt) + 1) * sizeof(char));
939 form += p - strfrmt + 1; 939 form += (p - strfrmt) + 1;
940 *form = '\0'; 940 *form = '\0';
941 return p; 941 return p;
942} 942}
@@ -1335,7 +1335,7 @@ static int str_pack (lua_State *L) {
1335 totalsize += len + 1; 1335 totalsize += len + 1;
1336 break; 1336 break;
1337 } 1337 }
1338 case Kpadding: luaL_addchar(&b, LUA_PACKPADBYTE); /* go through */ 1338 case Kpadding: luaL_addchar(&b, LUA_PACKPADBYTE); /* FALLTHROUGH */
1339 case Kpaddalign: case Knop: 1339 case Kpaddalign: case Knop:
1340 arg--; /* undo increment */ 1340 arg--; /* undo increment */
1341 break; 1341 break;