** Try to compile line on the stack as 'return ;'; on return, stack ** has either compiled chunk or original line (if compilation failed). */
| 144 | ** has either compiled chunk or original line (if compilation failed). |
| 145 | */ |
| 146 | static int addreturn(lua_State *L) |
| 147 | { |
| 148 | const char *line = lua_tostring(L, -1); /* original line */ |
| 149 | const char *retline = lua_pushfstring(L, "return %s;", line); |
| 150 | int status = luaL_loadbuffer(L, retline, strlen(retline), "=stdin"); |
| 151 | if (status == LUA_OK) |
| 152 | lua_remove(L, -2); /* remove modified line */ |
| 153 | else |
| 154 | lua_pop(L, 2); /* pop result from 'luaL_loadbuffer' and modified line */ |
| 155 | return status; |
| 156 | } |
| 157 | |
| 158 | /* |
| 159 | ** Read a line and try to load (compile) it first as an expression (by |
no test coverage detected