diff --git a/src/mapping.c b/src/mapping.c index 43afd10c8e47790b1ae734a427af5438bb61d9d8..321dabaa11d9af095941e4ad2f80dbca559f9200 100644 --- a/src/mapping.c +++ b/src/mapping.c @@ -340,13 +340,13 @@ static void mapping_rehash_backwards_evil(struct mapping_data *md, default: Pike_fatal("Instable mapping data flags.\n"); case MAPPING_WEAK_INDICES: - if (REFCOUNTED_TYPE(TYPEOF(from->ind)) && + if (!REFCOUNTED_TYPE(TYPEOF(from->ind)) || (*from->ind.u.refs > 1)) { goto keep_keypair; } break; case MAPPING_WEAK_VALUES: - if (REFCOUNTED_TYPE(TYPEOF(from->val)) && + if (!REFCOUNTED_TYPE(TYPEOF(from->val)) || (*from->val.u.refs > 1)) { goto keep_keypair; }