From a70f5bb51ea479f9d4932ebc182be9d61f5f6d7c Mon Sep 17 00:00:00 2001 From: micha Date: Sat, 23 Jun 2007 09:35:47 +0000 Subject: [PATCH] * fix lock release in heap trace git-svn-id: trunk@7782 - --- rtl/inc/heaptrc.pp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rtl/inc/heaptrc.pp b/rtl/inc/heaptrc.pp index 52f2fcc227..45102baeaf 100644 --- a/rtl/inc/heaptrc.pp +++ b/rtl/inc/heaptrc.pp @@ -648,6 +648,7 @@ function TraceFreeMemSize(p:pointer;size:ptrint):ptrint; var loc_info: pheap_info; pp: pheap_mem_info; + release_lock: boolean; begin if p=nil then begin @@ -656,11 +657,13 @@ begin end; loc_info:=@heap_info; pp:=pheap_mem_info(p-sizeof(theap_mem_info)); + release_lock:=false; if @loc_info^.heap_free_todo <> pp^.todolist then begin if pp^.todolist = main_orig_todolist then pp^.todolist := main_relo_todolist; entercriticalsection(todo_lock); + release_lock:=true; if pp^.todolist = @orphaned_info.heap_free_todo then begin loc_info := @orphaned_info; @@ -674,7 +677,7 @@ begin exit(pp^.size); end; end; - TraceFreeMemSize:=InternalFreeMemSize(loc_info,p,pp,size,loc_info = @orphaned_info); + TraceFreeMemSize:=InternalFreeMemSize(loc_info,p,pp,size,release_lock); end;