@@ -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 %u)" , 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