diff --git a/lib/mrb/mrb_table_sort_key.c b/lib/mrb/mrb_table_sort_key.c index 46aea9839b..860dd2b476 100644 --- a/lib/mrb/mrb_table_sort_key.c +++ b/lib/mrb/mrb_table_sort_key.c @@ -32,12 +32,18 @@ static void mrb_grn_table_sort_key_free(mrb_state *mrb, void *data) { + grn_ctx *ctx = (grn_ctx *)mrb->ud; grn_table_sort_key *sort_key = data; if (!sort_key) { return; } + if (sort_key->key) { + if (sort_key->key->header.type == GRN_ACCESSOR) { + grn_obj_unlink(ctx, sort_key->key); + } + } mrb_free(mrb, sort_key); }