Have _heapmaxavail() work as advertised.
The cc65 doc explicitly states that the return value of _heapmaxavail() can be used as parameter of malloc(). To actually allow for that the size of HEAP_ADMIN_SPACE has to be substracted from the raw size of the largest free heap block.
This commit is contained in:
parent
4b085f193e
commit
d001a6f1a0
1 changed files with 11 additions and 2 deletions
|
@ -61,7 +61,7 @@ __heapmaxavail:
|
|||
|
||||
; F = F->next;
|
||||
|
||||
@L2: iny ; Points to F->next
|
||||
@L2: iny ; Points to F->next
|
||||
lda (ptr1),y
|
||||
tax
|
||||
iny
|
||||
|
@ -69,8 +69,17 @@ __heapmaxavail:
|
|||
stx ptr1
|
||||
jmp @L1
|
||||
|
||||
; return Size;
|
||||
; if (Size < HEAP_ADMIN_SPACE) return 0;
|
||||
|
||||
@L3: lda ptr2
|
||||
sub #HEAP_ADMIN_SPACE
|
||||
ldx ptr2+1
|
||||
bcs @L5
|
||||
bne @L4
|
||||
txa
|
||||
rts
|
||||
|
||||
; return Size - HEAP_ADMIN_SPACE;
|
||||
|
||||
@L4: dex
|
||||
@L5: rts
|
||||
|
|
Loading…
Add table
Reference in a new issue