@@ -69,9 +69,9 @@ static void zend_win_error_message(int type, char *msg, int err)
69
69
php_win32_error_msg_free (buf );
70
70
}
71
71
72
- static char * create_name_with_username (char * name )
72
+ static char * create_name_with_username (const char * name , size_t unique_id )
73
73
{
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 ];
75
75
char * p = newname ;
76
76
p += strlcpy (newname , name , MAXPATHLEN + 1 );
77
77
* (p ++ ) = '@' ;
@@ -80,15 +80,19 @@ static char *create_name_with_username(char *name)
80
80
p += strlcpy (p , sapi_module .name , 21 );
81
81
* (p ++ ) = '@' ;
82
82
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
+ }
84
88
ZEND_ASSERT (p - newname <= sizeof (newname ));
85
89
86
90
return newname ;
87
91
}
88
92
89
93
void zend_shared_alloc_create_lock (void )
90
94
{
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 ));
92
96
if (!memory_mutex ) {
93
97
zend_accel_error (ACCEL_LOG_FATAL , "Cannot create mutex (error %u)" , GetLastError ());
94
98
return ;
@@ -222,7 +226,7 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
222
226
can be called before the child process is killed. In this case, the mapping will fail
223
227
and we have to sleep some time (until the child releases the mapping object) and retry.*/
224
228
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 ));
226
230
if (memfile == NULL ) {
227
231
err = GetLastError ();
228
232
break ;
@@ -267,7 +271,7 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
267
271
(* shared_segments_p )[0 ] = shared_segment ;
268
272
269
273
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 ));
271
275
if (memfile == NULL ) {
272
276
err = GetLastError ();
273
277
zend_shared_alloc_unlock_win32 ();
0 commit comments