From 4ce4e69db68ce2155c9235ff718914059866d977 Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Fri, 19 Apr 2002 12:46:19 +0000 Subject: 2002-04-16 Thomas Pfaff * 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. --- winsup/cygwin/dll_init.cc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'winsup/cygwin/dll_init.cc') 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) { -- cgit v1.2.3