@@ -69,9 +69,9 @@ static void zend_win_error_message(int type, char *msg, int err)
6969	php_win32_error_msg_free (buf );
7070}
7171
72- static  char  * create_name_with_username (char  * name )
72+ static  char  * create_name_with_username (const   char  * name ,  size_t   unique_id )
7373{
74- 	static  char  newname [MAXPATHLEN  +  1  +  32  +  1  +  20  +  1  +  32  +  1 ];
74+ 	static  char  newname [MAXPATHLEN  +  1  +  32  +  1  +  20  +  1  +  32  +  sizeof ( "ffffffffffffffff" ) - 1   +   1 ];
7575	char  * p  =  newname ;
7676	p  +=  strlcpy (newname , name , MAXPATHLEN  +  1 );
7777	* (p ++ ) =  '@' ;
@@ -80,15 +80,19 @@ static char *create_name_with_username(char *name)
8080	p  +=  strlcpy (p , sapi_module .name , 21 );
8181	* (p ++ ) =  '@' ;
8282	p  =  zend_mempcpy (p , zend_system_id , 32 );
83- 	* (p ++ ) =  '\0' ;
83+ 	if  (unique_id ) {
84+ 		p  +=  snprintf (p , sizeof ("ffffffffffffffff" ), "%zx" , unique_id ) +  1 ;
85+ 	} else  {
86+ 		* (p ++ ) =  '\0' ;
87+ 	}
8488	ZEND_ASSERT (p  -  newname  <= sizeof (newname ));
8589
8690	return  newname ;
8791}
8892
8993void  zend_shared_alloc_create_lock (void )
9094{
91- 	memory_mutex  =  CreateMutex (NULL , FALSE, create_name_with_username (ACCEL_MUTEX_NAME ));
95+ 	memory_mutex  =  CreateMutex (NULL , FALSE, create_name_with_username (ACCEL_MUTEX_NAME ,  0 ));
9296	if  (!memory_mutex ) {
9397		zend_accel_error (ACCEL_LOG_FATAL , "Cannot create mutex (error %lu)" , GetLastError ());
9498		return ;
@@ -222,7 +226,7 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
222226	   can be called before the child process is killed. In this case, the mapping will fail 
223227	   and we have to sleep some time (until the child releases the mapping object) and retry.*/ 
224228	do  {
225- 		memfile  =  OpenFileMapping (FILE_MAP_READ |FILE_MAP_WRITE |FILE_MAP_EXECUTE , 0 , create_name_with_username (ACCEL_FILEMAP_NAME ));
229+ 		memfile  =  OpenFileMapping (FILE_MAP_READ |FILE_MAP_WRITE |FILE_MAP_EXECUTE , 0 , create_name_with_username (ACCEL_FILEMAP_NAME ,  requested_size ));
226230		if  (memfile  ==  NULL ) {
227231			err  =  GetLastError ();
228232			break ;
@@ -267,7 +271,7 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
267271	(* shared_segments_p )[0 ] =  shared_segment ;
268272
269273	memfile 	=  CreateFileMapping (INVALID_HANDLE_VALUE , NULL , PAGE_EXECUTE_READWRITE  | SEC_COMMIT , size_high , size_low ,
270- 								create_name_with_username (ACCEL_FILEMAP_NAME ));
274+ 								create_name_with_username (ACCEL_FILEMAP_NAME ,  requested_size ));
271275	if  (memfile  ==  NULL ) {
272276		err  =  GetLastError ();
273277		zend_shared_alloc_unlock_win32 ();
0 commit comments