IS4Code / PawnPlus

A SA-MP plugin enhancing the capabilities of the Pawn programming language
MIT License
102 stars 17 forks source link

Cloned pools appear to have different indices from the original #30

Closed spacemud closed 4 years ago

spacemud commented 4 years ago

I create an ordered pool to store material index data:

CreateMapMaterialPool(const name[MAX_MAP_NAME + 1], object_index)
{
    new
        Pool:p = pool_new(MAX_MAP_MATERIALS);

    pool_set_ordered(p, true);

    pool_set(GetAllMapMaterialPool(name), object_index, p);
}

When iterating through it:

// after adding 4 elements at indexes 1 - 4...
for_pool (i: GetMapMaterialPool(name, old_object_index))
{
    printf("original pool iter_get_key %d", iter_get_key(i));
}

new
    Pool:p = pool_clone(GetMapMaterialPool(name, old_object_index));

for_pool (i: p)
{
    printf("cloned pool iter_get_key %d", iter_get_key(i));
}
[run-dev] original pool iter_get_key 1
[run-dev] original pool iter_get_key 2
[run-dev] original pool iter_get_key 3
[run-dev] original pool iter_get_key 4
[run-dev] cloned pool iter_get_key 0
[run-dev] cloned pool iter_get_key 1
[run-dev] cloned pool iter_get_key 2
[run-dev] cloned pool iter_get_key 3

My understanding is that the cloned pool should have the same indices as the original one.