Fix hashmap collisions sometimes hanging deletion

This commit is contained in:
ISSOtm
2020-05-03 19:13:12 +02:00
parent c135e2c6a0
commit 781a65ee49
4 changed files with 50 additions and 0 deletions

View File

@@ -78,6 +78,7 @@ bool hash_RemoveElement(HashMap map, char const *key)
*ptr = next;
return true;
}
ptr = &(*ptr)->next;
}
return false;
}

View File

@@ -0,0 +1,34 @@
; Hashmap collisions are pretty poorly-tested code path...
; At some point, `PURGE` would malfunction with them
SECTION "Collision course", OAM[$FE00]
; All the following symbols collide!
aqfj: ds 1 ; Give them different addresses
cxje: ds 1
dgsd: ds 1
dork: ds 1
lxok: ds 1
psgp: ds 1
sfly: ds 1
syyq: ds 1
ussg: ds 1
xlmm: ds 1
xtzp: ds 1
zxfr: ds 1
; Completely by accident, but cool
PURGE dork
PRINTT "aqfj: {aqfj}\n"
PRINTT "cxje: {cxje}\n"
PRINTT "dgsd: {dgsd}\n"
PRINTT "dork: {dork}\n"
PRINTT "lxok: {lxok}\n"
PRINTT "psgp: {psgp}\n"
PRINTT "sfly: {sfly}\n"
PRINTT "syyq: {syyq}\n"
PRINTT "ussg: {ussg}\n"
PRINTT "xlmm: {xlmm}\n"
PRINTT "xtzp: {xtzp}\n"
PRINTT "zxfr: {zxfr}\n"

View File

@@ -0,0 +1,3 @@
ERROR: sym-collision.asm(26):
'dork' not defined
error: Assembly aborted (1 errors)!

View File

@@ -0,0 +1,12 @@
aqfj: $FE00
cxje: $FE01
dgsd: $FE02
dork: $0
lxok: $FE04
psgp: $FE05
sfly: $FE06
syyq: $FE07
ussg: $FE08
xlmm: $FE09
xtzp: $FE0A
zxfr: $FE0B