* localtime.cc (tzset): Guard by a muto for thread safety.
This commit is contained in:
		
							parent
							
								
									3623cfa399
								
							
						
					
					
						commit
						ea5bc3721f
					
				|  | @ -1,3 +1,7 @@ | |||
| 2007-12-11  Corinna Vinschen  <corinna@vinschen.de> | ||||
| 
 | ||||
| 	* localtime.cc (tzset): Guard by a muto for thread safety. | ||||
| 
 | ||||
| 2007-12-11  Dave Korn  <dave.korn@artimi.com> | ||||
| 
 | ||||
| 	* cygheap.cc (_csbrk):  Don't request zero bytes from VirtualAlloc, | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ | |||
| 
 | ||||
| #include "winsup.h" | ||||
| #include "cygerrno.h" | ||||
| #include "sync.h" | ||||
| #include <windows.h> | ||||
| #define STD_INSPIRED | ||||
| #define lint | ||||
|  | @ -1470,19 +1471,22 @@ tzsetwall P((void)) | |||
| 	settzname(); | ||||
| } | ||||
| 
 | ||||
| static NO_COPY muto tzset_guard; | ||||
| 
 | ||||
| extern "C" void | ||||
| tzset P((void)) | ||||
| { | ||||
| 	tzset_guard.init ("tzset_guard")->acquire (); | ||||
| 	const char *	name = getenv("TZ"); | ||||
| 
 | ||||
| 	if (name == NULL) { | ||||
| 		if (!lcl_is_set) | ||||
| 			tzsetwall(); | ||||
| 		return; | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
| 	if (lcl_is_set > 0  &&  strcmp(lcl_TZname, name) == 0) | ||||
| 		return; | ||||
| 		goto out; | ||||
| 	lcl_is_set = (strlen(name) < sizeof (lcl_TZname)); | ||||
| 	if (lcl_is_set) | ||||
| 		strcpy(lcl_TZname, name); | ||||
|  | @ -1492,7 +1496,7 @@ tzset P((void)) | |||
| 		lclptr = (struct state *) malloc(sizeof *lclptr); | ||||
| 		if (lclptr == NULL) { | ||||
| 			settzname();	/* all we can do */ | ||||
| 			return; | ||||
| 			goto out; | ||||
| 		} | ||||
| 	} | ||||
| #endif /* defined ALL_STATE */ | ||||
|  | @ -1510,6 +1514,8 @@ tzset P((void)) | |||
| 			gmtload(lclptr); | ||||
| 	} | ||||
| 	settzname(); | ||||
| out: | ||||
| 	tzset_guard.release (); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue