I ve been playing around with -gc and I found something suspect in heaptrc
procedure CheckPointer(p : pointer); [public, alias : 'FPC_CHECKPOINTER'];"p" is a pointer, that should be somewhere *inside* an allocated block of mem
pp:=loc_info^.heap_mem_root;
while ppnil do
begin
{ inside this block ! }
if
(ptruint(p)>=ptruint(pp)+sizeof(theap_mem_info)+ptruint(extra_info_size)) and(ptruint(p)<=ptruint(pp)+sizeof(theap_mem_info)+ptruint(extra_info_size)+ptruint(pp^.size)) then
if this loop does not find anything then
writeln(ptext^,'pointer $',hexstr(p),' does not point to valid memory
block');
dump_error(p,ptext^);
runerror(204);
but
procedure dump_error(p : pheap_mem_info;var ptext : text);expects a pheap_mem_info, p is not a pheap_mem_info
and that is where it crashes (shortly before dump stack trace :( ) Did I miss something or is there a bug?
