]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-dict: dict-lua - Do not free pool after iteration finishes
authorAki Tuomi <aki.tuomi@open-xchange.com>
Tue, 23 Mar 2021 07:02:06 +0000 (09:02 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Tue, 23 Mar 2021 12:23:46 +0000 (12:23 +0000)
Otherwise we get double-free from gc.

Broken in 1e67b93cc9f469bb144fc890a6cb9b9b9cd20811

src/lib-dict/dict-iter-lua.c

index ee6b3a98bdfea419c6ce9501cb10329cacff952b..14a505ce0ebaa56516b288240422d16feda9d72d 100644 (file)
@@ -72,9 +72,6 @@ static int lua_dict_iterate_step(lua_State *L)
        i_assert(nrefs % 2 == 0);
 
        if (nrefs == 0) {
-               /* iteration is over - clean up */
-               pool_unref(&iter->pool);
-
                if (iter->error_ref != 0) {
                        /* dict iteration generated an error - raise it now */
                        lua_rawgeti(L, LUA_REGISTRYINDEX, iter->error_ref);