fixed bug in string free preserving size in wrong place
This commit is contained in:
1 parent
83ab5eb98d
commit
6c930e8367
1 file changed
+17
-14
@@ -59,18 +59,9 @@ varstr_free_inside:
|
|||||||
// This is not the lowest string; mark it as free
|
// This is not the lowest string; mark it as free
|
||||||
// First preserve the string size, it will make it easier for the garbage collector
|
// First preserve the string size, it will make it easier for the garbage collector
|
||||||
|
|
||||||
lda DSCPNT+0
|
// Increase DSCPNT+1/+2 to point to the back-pointer minus 1
|
||||||
tay
|
|
||||||
dey
|
|
||||||
|
|
||||||
#if CONFIG_MEMORY_MODEL_60K
|
dec DSCPNT+0
|
||||||
ldx #<FRETOP
|
|
||||||
jsr poke_under_roms
|
|
||||||
#else // CONFIG_MEMORY_MODEL_38K || CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
|
||||||
sta (FRETOP), y
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Now increase DSCPNT+1/+2 to point to the back-pointer
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
lda DSCPNT+1
|
lda DSCPNT+1
|
||||||
@@ -79,9 +70,10 @@ varstr_free_inside:
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc DSCPNT+2
|
inc DSCPNT+2
|
||||||
!:
|
!:
|
||||||
// Fill the back-pointer with 0
|
// Put the size - this value will be used by the garbage collector // XXX maybe size-1 would be better?
|
||||||
|
|
||||||
lda #$00
|
inc DSCPNT+0
|
||||||
|
lda DSCPNT+0
|
||||||
ldy #$00
|
ldy #$00
|
||||||
|
|
||||||
#if CONFIG_MEMORY_MODEL_60K
|
#if CONFIG_MEMORY_MODEL_60K
|
||||||
@@ -91,7 +83,18 @@ varstr_free_inside:
|
|||||||
sta (DSCPNT+1), y
|
sta (DSCPNT+1), y
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
iny // $00 -> $01
|
// Now fill-in the back-pointer with 0's
|
||||||
|
|
||||||
|
tya
|
||||||
|
iny
|
||||||
|
|
||||||
|
#if CONFIG_MEMORY_MODEL_60K
|
||||||
|
jsr poke_under_roms
|
||||||
|
#else // CONFIG_MEMORY_MODEL_38K || CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
||||||
|
sta (DSCPNT+1), y
|
||||||
|
#endif
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
#if CONFIG_MEMORY_MODEL_60K
|
#if CONFIG_MEMORY_MODEL_60K
|
||||||
jmp poke_under_roms
|
jmp poke_under_roms
|
||||||
|
|||||||
Reference in new issue
Block a user