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.
			
			
This commit is contained in:
		| @@ -1,3 +1,9 @@ | ||||
| 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. | ||||
|  | ||||
| Wed Apr 17 11:27:04 2002  Jason Tishler <jason@tishler.net> | ||||
|  | ||||
| 	* security.cc (get_lsa_srv_inf): Prevent extraneous backslashes for | ||||
|   | ||||
| @@ -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) | ||||
|     { | ||||
|   | ||||
| @@ -13,6 +13,7 @@ struct per_module | ||||
|   char ***envptr; | ||||
|   void (**ctors)(void); | ||||
|   void (**dtors)(void); | ||||
|   bool dtors_run; | ||||
|   void *data_start; | ||||
|   void *data_end; | ||||
|   void *bss_start; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user