| 1388 | |
| 1389 | |
| 1390 | void CallRegisteredLuaSaveFunctions(int savestateNumber, LuaSaveData& saveData) |
| 1391 | { |
| 1392 | //lua_State* L = FCEU_GetLuaState(); |
| 1393 | if(L) |
| 1394 | { |
| 1395 | lua_settop(L, 0); |
| 1396 | lua_getfield(L, LUA_REGISTRYINDEX, luaCallIDStrings[LUACALL_BEFORESAVE]); |
| 1397 | |
| 1398 | if (lua_isfunction(L, -1)) |
| 1399 | { |
| 1400 | lua_pushinteger(L, savestateNumber); |
| 1401 | int ret = lua_pcall(L, 1, LUA_MULTRET, 0); |
| 1402 | if (ret != 0) { |
| 1403 | // This is grounds for trashing the function |
| 1404 | lua_pushnil(L); |
| 1405 | lua_setfield(L, LUA_REGISTRYINDEX, luaCallIDStrings[LUACALL_BEFORESAVE]); |
| 1406 | #ifdef __WIN_DRIVER__ |
| 1407 | MessageBox(hAppWnd, lua_tostring(L, -1), "Lua Error in SAVE function", MB_OK); |
| 1408 | #else |
| 1409 | LuaPrintfToWindowConsole("Lua error in registersave function: %s\n", lua_tostring(L, -1)); |
| 1410 | fprintf(stderr, "Lua error in registersave function: %s\n", lua_tostring(L, -1)); |
| 1411 | #endif |
| 1412 | } |
| 1413 | saveData.SaveRecord(L, LUA_DATARECORDKEY); |
| 1414 | } |
| 1415 | else |
| 1416 | { |
| 1417 | lua_pop(L, 1); |
| 1418 | } |
| 1419 | } |
| 1420 | } |
| 1421 | |
| 1422 | |
| 1423 | void CallRegisteredLuaLoadFunctions(int savestateNumber, const LuaSaveData& saveData) |
no test coverage detected