aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ltests.c40
1 files changed, 35 insertions, 5 deletions
diff --git a/ltests.c b/ltests.c
index 12efc592..b5b782f5 100644
--- a/ltests.c
+++ b/ltests.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ltests.c,v 2.68 2009/07/15 18:37:19 roberto Exp roberto $ 2** $Id: ltests.c,v 2.69 2009/08/26 17:41:26 roberto Exp roberto $
3** Internal Module for Debugging of the Lua Implementation 3** Internal Module for Debugging of the Lua Implementation
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -813,7 +813,13 @@ static int int2fb_aux (lua_State *L) {
813static const char *const delimits = " \t\n,;"; 813static const char *const delimits = " \t\n,;";
814 814
815static void skip (const char **pc) { 815static void skip (const char **pc) {
816 while (**pc != '\0' && strchr(delimits, **pc)) (*pc)++; 816 for (;;) {
817 if (**pc != '\0' && strchr(delimits, **pc)) (*pc)++;
818 else if (**pc == '#') {
819 while (**pc != '\n' && **pc != '\0') (*pc)++;
820 }
821 else break;
822 }
817} 823}
818 824
819static int getnum_aux (lua_State *L, const char **pc) { 825static int getnum_aux (lua_State *L, const char **pc) {
@@ -950,6 +956,9 @@ static int runC (lua_State *L, lua_State *L1, const char *pc) {
950 else if EQ("pushcclosure") { 956 else if EQ("pushcclosure") {
951 lua_pushcclosure(L1, testC, getnum); 957 lua_pushcclosure(L1, testC, getnum);
952 } 958 }
959 else if EQ("pushupvalueindex") {
960 lua_pushinteger(L1, lua_upvalueindex(getnum));
961 }
953 else if EQ("remove") { 962 else if EQ("remove") {
954 lua_remove(L1, getnum); 963 lua_remove(L1, getnum);
955 } 964 }
@@ -972,7 +981,20 @@ static int runC (lua_State *L, lua_State *L1, const char *pc) {
972 lua_concat(L1, getnum); 981 lua_concat(L1, getnum);
973 } 982 }
974 else if EQ("print") { 983 else if EQ("print") {
975 printf("%s\n", lua_tostring(L1, getnum)); 984 int n = getnum;
985 if (n != 0) {
986 printf("%s\n", luaL_tolstring(L1, n, NULL));
987 lua_pop(L1, 1);
988 }
989 else {
990 int i;
991 n = lua_gettop(L1);
992 for (i = 1; i <= n; i++) {
993 printf("%s ", luaL_tolstring(L1, i, NULL));
994 lua_pop(L1, 1);
995 }
996 printf("\n");
997 }
976 } 998 }
977 else if EQ("arith") { 999 else if EQ("arith") {
978 static char ops[] = "+-*/%^_"; 1000 static char ops[] = "+-*/%^_";
@@ -1002,6 +1024,15 @@ static int runC (lua_State *L, lua_State *L1, const char *pc) {
1002 int i = getnum; 1024 int i = getnum;
1003 lua_pcallk(L1, narg, nres, 0, i, Cfunck); 1025 lua_pcallk(L1, narg, nres, 0, i, Cfunck);
1004 } 1026 }
1027 else if EQ("callk") {
1028 int narg = getnum;
1029 int nres = getnum;
1030 int i = getnum;
1031 lua_callk(L1, narg, nres, i, Cfunck);
1032 }
1033 else if EQ("yield") {
1034 return lua_yield(L1, getnum);
1035 }
1005 else if EQ("loadstring") { 1036 else if EQ("loadstring") {
1006 size_t sl; 1037 size_t sl;
1007 const char *s = luaL_checklstring(L1, getnum, &sl); 1038 const char *s = luaL_checklstring(L1, getnum, &sl);
@@ -1095,8 +1126,7 @@ static int Cfunck (lua_State *L) {
1095 1126
1096static int makeCfunc (lua_State *L) { 1127static int makeCfunc (lua_State *L) {
1097 luaL_checkstring(L, 1); 1128 luaL_checkstring(L, 1);
1098 lua_settop(L, 1); 1129 lua_pushcclosure(L, Cfunc, lua_gettop(L));
1099 lua_pushcclosure(L, Cfunc, 1);
1100 return 1; 1130 return 1;
1101} 1131}
1102 1132