diff --git a/app/modules/cron.c b/app/modules/cron.c index 4a18a7325e..9604801894 100644 --- a/app/modules/cron.c +++ b/app/modules/cron.c @@ -78,6 +78,7 @@ static int lcron_parsedesc(lua_State *L, char *str, struct cronent_desc *desc) { static int lcron_create(lua_State *L) { // Check arguments char *strdesc = (char*)luaL_checkstring(L, 1); + void *newlist; luaL_checkanyfunction(L, 2); // Parse description struct cronent_desc desc; @@ -93,8 +94,12 @@ static int lcron_create(lua_State *L) { // Set entry ud->desc = desc; // Store entry + newlist = os_realloc(cronent_list, sizeof(int) * (cronent_count + 1)); + if (newlist == NULL) { + return luaL_error(L, "out of memory"); + } lua_pushvalue(L, -1); - cronent_list = os_realloc(cronent_list, sizeof(int) * (cronent_count + 1)); + cronent_list = newlist; cronent_list[cronent_count++] = luaL_ref(L, LUA_REGISTRYINDEX); return 1; } @@ -120,8 +125,13 @@ static int lcron_schedule(lua_State *L) { ud->desc = desc; size_t i = lcron_findindex(L, ud); if (i == -1) { + void *newlist; + newlist = os_realloc(cronent_list, sizeof(int) * (cronent_count + 1)); + if (newlist == NULL) { + return luaL_error(L, "out of memory"); + } + cronent_list = newlist; lua_pushvalue(L, 1); - cronent_list = os_realloc(cronent_list, sizeof(int) * (cronent_count + 1)); cronent_list[cronent_count++] = lua_ref(L, LUA_REGISTRYINDEX); } return 0;