diff --git a/src/backend/lib/knapsack.c b/src/backend/lib/knapsack.c index 13d800718f..b2f32fdd60 100644 --- a/src/backend/lib/knapsack.c +++ b/src/backend/lib/knapsack.c @@ -87,11 +87,11 @@ DiscreteKnapsack(int max_weight, int num_items, if (values[j] <= values[ow] + iv) { - /* copy sets[ow] to sets[j] without realloc */ + /* copy sets[ow] to sets[j] */ if (j != ow) { - sets[j] = bms_del_members(sets[j], sets[j]); - sets[j] = bms_add_members(sets[j], sets[ow]); + bms_free(sets[j]); + sets[j] = bms_copy(sets[ow]); } sets[j] = bms_add_member(sets[j], i);