From ab76a10c4d98567f4d0827f659304da8377ddc2f Mon Sep 17 00:00:00 2001 From: Alexandr Kuznetsov Date: Sat, 28 Sep 2024 23:29:00 +0300 Subject: [PATCH] Another place where refcnt in the COL_INFO object is unfortunately (#55) erased. Signed-off-by: Alexandr Kuznetsov --- descriptor.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/descriptor.c b/descriptor.c index 319c37b1..863cc76a 100644 --- a/descriptor.c +++ b/descriptor.c @@ -58,7 +58,11 @@ void TI_ClearObject(TABLE_INFO *ti) MYLOG(0, "!!!refcnt %p:%d -> %d\n", coli, coli->refcnt, coli->refcnt - 1); coli->refcnt--; if (coli->refcnt <= 1 && 0 == coli->acc_time) /* acc_time == 0 means the table is dropped */ + { + Int2 tmp_refcnt = coli->refcnt; /* If refcnt is still above 0, we must save it. */ free_col_info_contents(coli); /* Now coli object is unused, and may be reused later. */ + coli->refcnt = tmp_refcnt; + } if (coli->refcnt <= 0) { /* Last reference to coli object disappeared. Now destroying it. */