Fixed panic handling on REPL input.
The Lua debug module is mandatory now.
This commit is contained in:
parent
fbef7feae1
commit
46f5079a63
|
@ -72,7 +72,7 @@ menu "Lua configuration"
|
||||||
bool "UTF8 module"
|
bool "UTF8 module"
|
||||||
default "y"
|
default "y"
|
||||||
help
|
help
|
||||||
Includes the debug module.
|
Includes the debug module (required by our Lua VM).
|
||||||
|
|
||||||
config LUA_BUILTIN_DEBUG
|
config LUA_BUILTIN_DEBUG
|
||||||
bool "Debug module"
|
bool "Debug module"
|
||||||
|
@ -124,5 +124,6 @@ menu "Lua configuration"
|
||||||
default y
|
default y
|
||||||
select NODEMCU_CMODULE_PIPE
|
select NODEMCU_CMODULE_PIPE
|
||||||
select NODEMCU_CMODULE_UART
|
select NODEMCU_CMODULE_UART
|
||||||
|
select LUA_BUILTIN_DEBUG
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "lauxlib.h"
|
#include "lauxlib.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
#ifndef LUA_CROSS_COMPILER
|
#ifndef LUA_CROSS_COMPILER
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
/* defined in esp_system_internal.h */
|
/* defined in esp_system_internal.h */
|
||||||
|
@ -33,7 +34,7 @@ int panic_get_nvval() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int panic (lua_State *L) {
|
int lpanic (lua_State *L) {
|
||||||
(void)L; /* to avoid warnings */
|
(void)L; /* to avoid warnings */
|
||||||
#ifndef LUA_CROSS_COMPILER
|
#ifndef LUA_CROSS_COMPILER
|
||||||
uint8_t paniclevel = panic_get_nvval();
|
uint8_t paniclevel = panic_get_nvval();
|
||||||
|
@ -43,6 +44,7 @@ int panic (lua_State *L) {
|
||||||
lua_writestringerror("PANIC: unprotected error in call to Lua API (%s)\n",
|
lua_writestringerror("PANIC: unprotected error in call to Lua API (%s)\n",
|
||||||
lua_tostring(L, -1));
|
lua_tostring(L, -1));
|
||||||
#ifndef LUA_CROSS_COMPILER
|
#ifndef LUA_CROSS_COMPILER
|
||||||
|
fflush(stdout);
|
||||||
/* call abort() directly - we don't want another reset cause to intervene */
|
/* call abort() directly - we don't want another reset cause to intervene */
|
||||||
esp_reset_reason_set_hint(ESP_RST_PANIC);
|
esp_reset_reason_set_hint(ESP_RST_PANIC);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,6 +5,6 @@
|
||||||
|
|
||||||
void panic_clear_nvval (void);
|
void panic_clear_nvval (void);
|
||||||
int panic_get_nvval (void);
|
int panic_get_nvval (void);
|
||||||
int panic (lua_State *L);
|
int lpanic (lua_State *L);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -917,7 +917,7 @@ LUALIB_API void luaL_assertfail(const char *file, int line, const char *message)
|
||||||
LUALIB_API lua_State *luaL_newstate (void) {
|
LUALIB_API lua_State *luaL_newstate (void) {
|
||||||
lua_State *L = lua_newstate(l_alloc, NULL);
|
lua_State *L = lua_newstate(l_alloc, NULL);
|
||||||
lua_setallocf(L, l_alloc, L); /* allocator need lua_State. */
|
lua_setallocf(L, l_alloc, L); /* allocator need lua_State. */
|
||||||
if (L) lua_atpanic(L, &panic);
|
if (L) lua_atpanic(L, lpanic);
|
||||||
return L;
|
return L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1104,7 +1104,7 @@ static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
|
||||||
|
|
||||||
LUALIB_API lua_State *luaL_newstate (void) {
|
LUALIB_API lua_State *luaL_newstate (void) {
|
||||||
lua_State *L = lua_newstate(l_alloc, NULL);
|
lua_State *L = lua_newstate(l_alloc, NULL);
|
||||||
if (L) lua_atpanic(L, &panic);
|
if (L) lua_atpanic(L, lpanic);
|
||||||
return L;
|
return L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue