Berry fix POOL32 pointer comparison (#23468)

This commit is contained in:
s-hadinger 2025-05-23 22:45:04 +02:00 committed by GitHub
parent 553ee44b02
commit d7f9142833
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -270,7 +270,7 @@ static void free_from_pool(bvm *vm, void* ptr, size_t old_size) {
while (pool16) { while (pool16) {
int32_t offset = (uint8_t*)ptr - (uint8_t*) &pool16->lines[0]; int32_t offset = (uint8_t*)ptr - (uint8_t*) &pool16->lines[0];
// serial_debug("free_from_pool ptr=%p pool=%p offset=%i\n", ptr,pool16, offset); // serial_debug("free_from_pool ptr=%p pool=%p offset=%i\n", ptr,pool16, offset);
if ((offset >= 0) && (offset < POOL16_SLOTS*16) && ((offset & 0x0F) == 0)) { if ((offset >= 0) && (offset < POOL16_SLOTS*POOL16_SIZE) && ((offset & 0x0F) == 0)) {
int bit = offset >> 4; int bit = offset >> 4;
// serial_debug("free_from_pool ptr=%p fond pool=%p bit=%i\n", ptr, pool16, bit); // serial_debug("free_from_pool ptr=%p fond pool=%p bit=%i\n", ptr, pool16, bit);
// bitSet(pool16->bitmap, bit); // bitSet(pool16->bitmap, bit);
@ -285,7 +285,7 @@ static void free_from_pool(bvm *vm, void* ptr, size_t old_size) {
while (pool32) { while (pool32) {
int32_t offset = (uint8_t*)ptr - (uint8_t*) &pool32->lines[0]; int32_t offset = (uint8_t*)ptr - (uint8_t*) &pool32->lines[0];
// serial_debug("free_from_pool pool=%p offset=%i\n", pool32, offset); // serial_debug("free_from_pool pool=%p offset=%i\n", pool32, offset);
if ((offset >= 0) && (offset < POOL16_SLOTS*16) && ((offset & 0x1F) == 0)) { if ((offset >= 0) && (offset < POOL32_SLOTS*POOL32_SIZE) && ((offset & 0x1F) == 0)) {
int bit = offset >> 5; int bit = offset >> 5;
// serial_debug("free_from_pool ptr=%p fond pool=%p bit=%i\n", ptr, pool32, bit); // serial_debug("free_from_pool ptr=%p fond pool=%p bit=%i\n", ptr, pool32, bit);
// bitSet(pool32->bitmap, bit); // bitSet(pool32->bitmap, bit);