Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Collins <rbtcollins@hotmail.com>2002-04-19 16:46:19 +0400
committerRobert Collins <rbtcollins@hotmail.com>2002-04-19 16:46:19 +0400
commit4ce4e69db68ce2155c9235ff718914059866d977 (patch)
treed513f83720b4bd971a4aea743d6315294d98e50f /winsup/cygwin/dll_init.cc
parente9f1cbd0114a837679ca651f7332ab151f696cb8 (diff)
2002-04-16 Thomas Pfaff <tpfaff@gmx.net>
* dll_init.h (per_process::dtors_run): New member. * dll_init.cc (per_module::run_dtors): Run dtors only once. (dll::init): Initialize dtors_run flag.
Diffstat (limited to 'winsup/cygwin/dll_init.cc')
-rw-r--r--winsup/cygwin/dll_init.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc
index e5e650fa9..4ff740cc4 100644
--- a/winsup/cygwin/dll_init.cc
+++ b/winsup/cygwin/dll_init.cc
@@ -59,6 +59,11 @@ void
per_module::run_dtors ()
{
void (**pfunc)() = dtors;
+
+ if( dtors_run )
+ return;
+ dtors_run = true;
+
for (int i = 1; pfunc[i]; i++)
(pfunc[i]) ();
}
@@ -72,6 +77,8 @@ dll::init ()
/* Why didn't we just import this variable? */
*(p.envptr) = __cygwin_environ;
+ p.dtors_run = false;
+
/* Don't run constructors or the "main" if we've forked. */
if (!in_forkee)
{