mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 07:19:26 +02:00
* Fix mem leak (stack memory never freed) in wasm.
This commit is contained in:
parent
32a9dab401
commit
2406b203be
@ -562,6 +562,7 @@ end;
|
||||
|
||||
function WasiCloseThread(threadHandle : TThreadID) : dword;
|
||||
begin
|
||||
FreeStackAndTlsBlock(PWasmThread(threadhandle));
|
||||
Result:=0;
|
||||
end;
|
||||
|
||||
@ -599,7 +600,6 @@ begin
|
||||
repeat
|
||||
until fpc_wasm32_i32_atomic_load8_u(@TH^.ThreadHasFinished)<>0;
|
||||
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('WaitForThreadTerminate('+IntToStr(PtrUINT(TH))+') : FreeStackAndTlsBlock');{$ENDIF}
|
||||
FreeStackAndTlsBlock(TH);
|
||||
end;
|
||||
|
||||
function WasiThreadSetPriority(threadHandle : TThreadID; Prio: longint): boolean;
|
||||
|
@ -113,9 +113,10 @@ begin
|
||||
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('Thread '+IntToStr(ptruint(lthread))+' should be freed');{$ENDIF}
|
||||
LThread.Free;
|
||||
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('Thread freed');{$ENDIF}
|
||||
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('Thread func calling EndThread');{$ENDIF}
|
||||
EndThread(Result);
|
||||
end;
|
||||
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('Thread func calling EndThread');{$ENDIF}
|
||||
EndThread(Result);
|
||||
|
||||
end;
|
||||
|
||||
procedure TThread.SysCreate(CreateSuspended: Boolean; const StackSize: SizeUInt);
|
||||
@ -195,6 +196,9 @@ begin
|
||||
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('TThread.SysDestroy: freeing fatal exception if it exists');{$ENDIF}
|
||||
FFatalException.Free;
|
||||
FFatalException := nil;
|
||||
// Free resources associated with thread.
|
||||
// This must be done after EndThread is called, but that is called in ThreadFunc
|
||||
CloseThread(FHandle);
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user