From: <ou...@us...> - 2012-10-28 13:56:31
|
Revision: 3876 http://jcl.svn.sourceforge.net/jcl/?rev=3876&view=rev Author: outchy Date: 2012-10-28 13:56:24 +0000 (Sun, 28 Oct 2012) Log Message: ----------- Mantis 5982: JclHookThreads causes CreateThread to give an AV if the optional lpThreadId parameter is omitted. Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2012-09-28 12:17:26 UTC (rev 3875) +++ trunk/jcl/source/windows/JclDebug.pas 2012-10-28 13:56:24 UTC (rev 3876) @@ -5867,11 +5867,19 @@ function HookedCreateThread(SecurityAttributes: Pointer; StackSize: LongWord; ThreadFunc: TThreadFunc; Parameter: Pointer; - CreationFlags: LongWord; var ThreadId: LongWord): Integer; stdcall; + CreationFlags: LongWord; ThreadId: PLongWord): Integer; stdcall; +var + LocalThreadId: LongWord; begin - Result := Kernel32_CreateThread(SecurityAttributes, StackSize, ThreadFunc, Parameter, CreationFlags, ThreadId); + Result := Kernel32_CreateThread(SecurityAttributes, StackSize, ThreadFunc, Parameter, CreationFlags, LocalThreadId); if Result <> 0 then - JclDebugThreadList.RegisterThreadID(ThreadId); + begin + JclDebugThreadList.RegisterThreadID(LocalThreadId); + if ThreadId <> nil then + begin + ThreadId^ := LocalThreadId; + end; + end; end; procedure HookedExitThread(ExitCode: Integer); stdcall; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |