]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorChristoph M. Becker <cmbecker69@gmx.de>
Wed, 29 Jul 2020 11:37:50 +0000 (13:37 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Wed, 29 Jul 2020 11:38:53 +0000 (13:38 +0200)
* PHP-7.4:
  Revert "Merge branch 'PHP-7.3' into PHP-7.4"

1  2 
ext/opcache/shared_alloc_win32.c

index 337cf9d7db8daf98d2483274e77b5509c530f7fb,d2c31dd63b04a7b262b62e26854341a53961c1e0..856e33696a677051046fa6b206ceef1954936825
@@@ -172,17 -206,8 +206,17 @@@ static int zend_shared_alloc_reattach(s
                        return ALLOC_FAILURE;
                }
                return ALLOC_FAIL_MAPPING;
 +      } else {
 +              DWORD old;
 +
 +              if (!VirtualProtect(mapping_base, requested_size, PAGE_READWRITE, &old)) {
 +                      err = GetLastError();
 +                      zend_win_error_message(ACCEL_LOG_FATAL, "VirtualProtect() failed", err);
 +                      return ALLOC_FAIL_MAPPING;
 +              }
        }
-       smm_shared_globals = (zend_smm_shared_globals *) ((char*)mapping_base + ACCEL_BASE_POINTER_SIZE);
 +
+       smm_shared_globals = (zend_smm_shared_globals *) mapping_base;
  
        return SUCCESSFULLY_REATTACHED;
  }
@@@ -300,18 -325,20 +334,29 @@@ static int create_segments(size_t reque
                *error_in = "MapViewOfFile";
                return ALLOC_FAILURE;
        } else {
 -              char *mmap_base_file = get_mmap_base_file();
++              char *mmap_base_file;
+               void *execute_ex_base = (void *)execute_ex;
 -              FILE *fp = fopen(mmap_base_file, "w");
++              FILE *fp;
 +              DWORD old;
 +
 +              if (!VirtualProtect(mapping_base, requested_size, PAGE_READWRITE, &old)) {
 +                      err = GetLastError();
 +                      zend_win_error_message(ACCEL_LOG_FATAL, "VirtualProtect() failed", err);
 +                      return ALLOC_FAILURE;
 +              }
-               ((void**)mapping_base)[0] = mapping_base;
-               ((void**)mapping_base)[1] = (void*)execute_ex;
-               ((char*)shared_segment->p) += ACCEL_BASE_POINTER_SIZE;
++              mmap_base_file = get_mmap_base_file();
++              fp = fopen(mmap_base_file, "w");
+               if (!fp) {
+                       err = GetLastError();
+                       zend_shared_alloc_unlock_win32();
+                       zend_win_error_message(ACCEL_LOG_WARNING, mmap_base_file, err);
+                       zend_win_error_message(ACCEL_LOG_FATAL, "Unable to write base address", err);
+                       return ALLOC_FAILURE;
                }
+               fprintf(fp, "%p\n", mapping_base);
+               fprintf(fp, "%p\n", execute_ex_base);
+               fclose(fp);
+       }
  
        shared_segment->pos = 0;
        shared_segment->size = requested_size;