[fpc-devel] Patch proposal
zhubr at mail.ru
Tue Dec 29 21:48:15 CET 2009
(Sorry if this appears twice on the list, I've made one attempt to
post before I subscribed to the list, and it seems it was silently
Could someone please consider the patch below.
This patch makes ThreadFunc (rtl/unix/tthread.inc) behave like the
generic ThreadProc (classes.inc).
That is, thread object will never be accessed by RTL after DoTerminate
call (unless FreeOnTerminate=true, of course). As a side effect, any
changes to FreeOnTerminate within DoTerminate are ignored.
(The reason this is important is because one may want to initiate
thread object disposal from within DoTerminate, but use another thread
to get some data from the no-longer-running thread and then actually
This patch is against version 2.4.0rc1.
--- fpcsrc/rtl/unix/tthread.inc.orig Thu Jan 24 22:30:56 2008
+++ fpcsrc/rtl/unix/tthread.inc Sun Dec 27 14:12:20 2009
@@ -85,6 +85,7 @@
function ThreadFunc(parameter: Pointer): ptrint;
+ LFreeOnTerminate: boolean;
lErrorAddr, lErrorBase: Pointer;
@@ -143,8 +144,9 @@
Result := LThread.FReturnValue;
WRITE_DEBUG('Result is ',Result);
LThread.FFinished := True;
+ LFreeOnTerminate := LThread.FreeOnTerminate;
- if LThread.FreeOnTerminate then
+ if LFreeOnTerminate then
WRITE_DEBUG('Thread ',ptruint(lthread),' should be freed');
More information about the fpc-devel