functions should return explicit "nil"s.
diff --git a/lbuiltin.c b/lbuiltin.c
index c555ddf..512ec63 100644
--- a/lbuiltin.c
+++ b/lbuiltin.c
@@ -1,5 +1,5 @@
/*
-** $Id: lbuiltin.c,v 1.30 1998/06/19 16:14:09 roberto Exp roberto $
+** $Id: lbuiltin.c,v 1.31 1998/06/19 18:47:06 roberto Exp roberto $
** Built-in functions
** See Copyright Notice in lua.h
*/
@@ -54,6 +54,7 @@
pushstring(g);
luaA_pushobject(&g->u.s.globalval);
}
+ else lua_pushnil();
}
@@ -90,6 +91,7 @@
luaA_pushobject(&n->ref);
luaA_pushobject(&n->val);
}
+ else lua_pushnil();
}
@@ -214,8 +216,8 @@
luaL_arg_check(0 <= base && base <= 36, 2, "base out of range");
n = strtol(s, &s, base);
while (isspace(*s)) s++; /* skip trailing spaces */
- if (*s) return; /* invalid format: return nil */
- lua_pushnumber(n);
+ if (*s) lua_pushnil(); /* invalid format: return nil */
+ else lua_pushnumber(n);
}
}
@@ -303,8 +305,10 @@
lua_seterrormethod();
}
if (status != 0) { /* error in call? */
- if (strchr(options, 'x'))
+ if (strchr(options, 'x')) {
+ lua_pushnil();
return; /* return nil to signal the error */
+ }
else
lua_error(NULL);
}
diff --git a/lstrlib.c b/lstrlib.c
index 7218872..613f6d5 100644
--- a/lstrlib.c
+++ b/lstrlib.c
@@ -1,5 +1,5 @@
/*
-** $Id: lstrlib.c,v 1.15 1998/06/19 16:14:09 roberto Exp roberto $
+** $Id: lstrlib.c,v 1.16 1998/06/24 13:33:00 roberto Exp roberto $
** Standard library for strings and pattern-matching
** See Copyright Notice in lua.h
*/
@@ -346,6 +346,7 @@
if (s2) {
lua_pushnumber(s2-s+1);
lua_pushnumber(s2-s+strlen(p));
+ return;
}
}
else {
@@ -363,6 +364,7 @@
}
} while (s1++<cap.src_end && !anchor);
}
+ lua_pushnil(); /* if arives here, it didn't find */
}