Bladeren bron

* fix lock release in heap trace

git-svn-id: trunk@7782 -
micha 18 jaren geleden
bovenliggende
commit
a70f5bb51e
1 gewijzigde bestanden met toevoegingen van 4 en 1 verwijderingen
  1. 4 1
      rtl/inc/heaptrc.pp

+ 4 - 1
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;