1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 16:25:16 +03:00

Modifications to luaCompileAndSave() - as scripts are loaded it will check for existing file <file>.lua.src and compile it to <file>.lua if found. (ported from master, re #3079)

This commit is contained in:
dsbeach 2015-11-16 11:24:42 -05:00 committed by Damjan Adamic
parent e1cf90d6d4
commit a1bb31b521

View file

@ -242,15 +242,15 @@ static int luaDumpWriter(lua_State* L, const void* p, size_t size, void* u)
return (result != FR_OK && !written); return (result != FR_OK && !written);
} }
static void luaCompileAndSave(const char *filename) static void luaCompileAndSave(const char *bytecodeName)
{ {
FIL D; FIL D;
char bytecodeName[1024]; char srcName[1024];
strcpy(bytecodeName, filename); strcpy(srcName, bytecodeName);
strcat(bytecodeName, "c"); strcat(srcName, ".src");
if (f_stat(bytecodeName, 0) == FR_OK) { if (f_stat(srcName, 0) != FR_OK) {
return; // compiled file already exists return; // no source to compile
} }
if (f_open(&D, bytecodeName, FA_WRITE | FA_CREATE_ALWAYS) != FR_OK) { if (f_open(&D, bytecodeName, FA_WRITE | FA_CREATE_ALWAYS) != FR_OK) {
@ -259,7 +259,7 @@ static void luaCompileAndSave(const char *filename)
} }
PROTECT_LUA() { PROTECT_LUA() {
if (luaL_loadfile(L, filename) == 0) { if (luaL_loadfile(L, srcName) == 0) {
lua_lock(L); lua_lock(L);
luaU_dump(L, getproto(L->top - 1), luaDumpWriter, &D, 1); luaU_dump(L, getproto(L->top - 1), luaDumpWriter, &D, 1);
lua_unlock(L); lua_unlock(L);