aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2025-10-16 13:23:51 +0200
committerMike Pall <mike>2025-10-16 13:23:51 +0200
commit5c3254d68d2579bf8c5bd1e39e612582fb5a04f6 (patch)
treeec5487aef0317705b31dcf34b7646f8a784ce992
parenta21ba1c9b5218ef83eb8bc6d374764da84f77ffd (diff)
downloadluajit-5c3254d68d2579bf8c5bd1e39e612582fb5a04f6.tar.gz
luajit-5c3254d68d2579bf8c5bd1e39e612582fb5a04f6.tar.bz2
luajit-5c3254d68d2579bf8c5bd1e39e612582fb5a04f6.zip
Gracefully handle broken custom allocator.
Reported by Alex Orlenko. #1393
-rw-r--r--src/lj_state.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lj_state.c b/src/lj_state.c
index 3cad8cc1..fb6d41a5 100644
--- a/src/lj_state.c
+++ b/src/lj_state.c
@@ -261,7 +261,11 @@ LUA_API lua_State *lua_newstate(lua_Alloc allocf, void *allocd)
261 } 261 }
262#endif 262#endif
263 GG = (GG_State *)allocf(allocd, NULL, 0, sizeof(GG_State)); 263 GG = (GG_State *)allocf(allocd, NULL, 0, sizeof(GG_State));
264 if (GG == NULL || !checkptrGC(GG)) return NULL; 264 if (GG == NULL) return NULL;
265 if (!checkptrGC(GG)) {
266 allocf(allocd, GG, sizeof(GG_State), 0);
267 return NULL;
268 }
265 memset(GG, 0, sizeof(GG_State)); 269 memset(GG, 0, sizeof(GG_State));
266 L = &GG->L; 270 L = &GG->L;
267 g = &GG->g; 271 g = &GG->g;