aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1998-06-29 15:24:06 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1998-06-29 15:24:06 -0300
commite869d17eb1309bfd81802a21b546a76e7ed6c38a (patch)
tree31981e2682a6f4b1197a06e0490bbd9cfc7ee47c
parent9a0221ef5887b25bb5e8cc734cedd7418250c8cd (diff)
downloadlua-e869d17eb1309bfd81802a21b546a76e7ed6c38a.tar.gz
lua-e869d17eb1309bfd81802a21b546a76e7ed6c38a.tar.bz2
lua-e869d17eb1309bfd81802a21b546a76e7ed6c38a.zip
functions should return explicit "nil"s.
-rw-r--r--lbuiltin.c12
-rw-r--r--lstrlib.c4
2 files changed, 11 insertions, 5 deletions
diff --git a/lbuiltin.c b/lbuiltin.c
index c555ddf9..512ec631 100644
--- a/lbuiltin.c
+++ b/lbuiltin.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lbuiltin.c,v 1.30 1998/06/19 16:14:09 roberto Exp roberto $ 2** $Id: lbuiltin.c,v 1.31 1998/06/19 18:47:06 roberto Exp roberto $
3** Built-in functions 3** Built-in functions
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -54,6 +54,7 @@ static void nextvar (void)
54 pushstring(g); 54 pushstring(g);
55 luaA_pushobject(&g->u.s.globalval); 55 luaA_pushobject(&g->u.s.globalval);
56 } 56 }
57 else lua_pushnil();
57} 58}
58 59
59 60
@@ -90,6 +91,7 @@ static void next (void)
90 luaA_pushobject(&n->ref); 91 luaA_pushobject(&n->ref);
91 luaA_pushobject(&n->val); 92 luaA_pushobject(&n->val);
92 } 93 }
94 else lua_pushnil();
93} 95}
94 96
95 97
@@ -214,8 +216,8 @@ static void tonumber (void)
214 luaL_arg_check(0 <= base && base <= 36, 2, "base out of range"); 216 luaL_arg_check(0 <= base && base <= 36, 2, "base out of range");
215 n = strtol(s, &s, base); 217 n = strtol(s, &s, base);
216 while (isspace(*s)) s++; /* skip trailing spaces */ 218 while (isspace(*s)) s++; /* skip trailing spaces */
217 if (*s) return; /* invalid format: return nil */ 219 if (*s) lua_pushnil(); /* invalid format: return nil */
218 lua_pushnumber(n); 220 else lua_pushnumber(n);
219 } 221 }
220} 222}
221 223
@@ -303,8 +305,10 @@ static void luaI_call (void)
303 lua_seterrormethod(); 305 lua_seterrormethod();
304 } 306 }
305 if (status != 0) { /* error in call? */ 307 if (status != 0) { /* error in call? */
306 if (strchr(options, 'x')) 308 if (strchr(options, 'x')) {
309 lua_pushnil();
307 return; /* return nil to signal the error */ 310 return; /* return nil to signal the error */
311 }
308 else 312 else
309 lua_error(NULL); 313 lua_error(NULL);
310 } 314 }
diff --git a/lstrlib.c b/lstrlib.c
index 72188723..613f6d53 100644
--- a/lstrlib.c
+++ b/lstrlib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lstrlib.c,v 1.15 1998/06/19 16:14:09 roberto Exp roberto $ 2** $Id: lstrlib.c,v 1.16 1998/06/24 13:33:00 roberto Exp roberto $
3** Standard library for strings and pattern-matching 3** Standard library for strings and pattern-matching
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -346,6 +346,7 @@ static void str_find (void)
346 if (s2) { 346 if (s2) {
347 lua_pushnumber(s2-s+1); 347 lua_pushnumber(s2-s+1);
348 lua_pushnumber(s2-s+strlen(p)); 348 lua_pushnumber(s2-s+strlen(p));
349 return;
349 } 350 }
350 } 351 }
351 else { 352 else {
@@ -363,6 +364,7 @@ static void str_find (void)
363 } 364 }
364 } while (s1++<cap.src_end && !anchor); 365 } while (s1++<cap.src_end && !anchor);
365 } 366 }
367 lua_pushnil(); /* if arives here, it didn't find */
366} 368}
367 369
368 370