fix_DiscreteKnapsack.patch
text/plain
Filename: fix_DiscreteKnapsack.patch
Type: text/plain
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/lib/knapsack.c | 3 | 3 |
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);