mirror of
https://github.com/php/php-src.git
synced 2025-01-19 02:03:47 +08:00
Revert "Revert "Merge branch 'PHP-7.4'""
This reverts commit28e650a
, which reverted commit046dcfb
, which had to be reverted due to phpdbg issues. The culprit was that we did not properly reset `zend_handler_table` to `NULL`, which is required for SAPIs which may restart the engine after shutdown. [1] <http://git.php.net/?p=php-src.git;a=commit;h=28e650abf8097a28789a005e5028fee095359583> [2] <http://git.php.net/?p=php-src.git;a=commit;h=046dcfb531e242d36a7af2942b9b148290c3c7fe>
This commit is contained in:
parent
466e288b01
commit
a582931f42
@ -613,4 +613,12 @@ extern "C++" {
|
||||
# define ZEND_PREFER_RELOAD
|
||||
#endif
|
||||
|
||||
#if defined(ZEND_WIN32) && defined(_DEBUG) && defined(PHP_WIN32_DEBUG_HEAP)
|
||||
# define ZEND_IGNORE_LEAKS_BEGIN() _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) & ~_CRTDBG_ALLOC_MEM_DF)
|
||||
# define ZEND_IGNORE_LEAKS_END() _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_ALLOC_MEM_DF)
|
||||
#else
|
||||
# define ZEND_IGNORE_LEAKS_BEGIN()
|
||||
# define ZEND_IGNORE_LEAKS_END()
|
||||
#endif
|
||||
|
||||
#endif /* ZEND_PORTABILITY_H */
|
||||
|
@ -546,6 +546,7 @@ Bigint {
|
||||
static Bigint *freelist[Kmax+1];
|
||||
|
||||
static void destroy_freelist(void);
|
||||
static void free_p5s(void);
|
||||
|
||||
#ifdef ZTS
|
||||
static MUTEX_T dtoa_mutex;
|
||||
@ -564,6 +565,8 @@ ZEND_API int zend_startup_strtod(void) /* {{{ */
|
||||
ZEND_API int zend_shutdown_strtod(void) /* {{{ */
|
||||
{
|
||||
destroy_freelist();
|
||||
free_p5s();
|
||||
|
||||
#ifdef ZTS
|
||||
tsrm_mutex_free(dtoa_mutex);
|
||||
dtoa_mutex = NULL;
|
||||
@ -4540,6 +4543,19 @@ static void destroy_freelist(void)
|
||||
FREE_DTOA_LOCK(0)
|
||||
}
|
||||
|
||||
static void free_p5s(void)
|
||||
{
|
||||
Bigint **listp, *tmp;
|
||||
|
||||
ACQUIRE_DTOA_LOCK(1)
|
||||
listp = &p5s;
|
||||
while ((tmp = *listp) != NULL) {
|
||||
*listp = tmp->next;
|
||||
free(tmp);
|
||||
}
|
||||
FREE_DTOA_LOCK(1)
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -59579,13 +59579,18 @@ void zend_vm_init(void)
|
||||
VM_TRACE_START();
|
||||
}
|
||||
|
||||
static HashTable *zend_handlers_table = NULL;
|
||||
|
||||
void zend_vm_dtor(void)
|
||||
{
|
||||
VM_TRACE_END();
|
||||
if (zend_handlers_table) {
|
||||
zend_hash_destroy(zend_handlers_table);
|
||||
free(zend_handlers_table);
|
||||
zend_handlers_table = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static HashTable *zend_handlers_table = NULL;
|
||||
|
||||
static void init_opcode_serialiser(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -67,13 +67,18 @@ void {%INITIALIZER_NAME%}(void)
|
||||
VM_TRACE_START();
|
||||
}
|
||||
|
||||
static HashTable *zend_handlers_table = NULL;
|
||||
|
||||
void zend_vm_dtor(void)
|
||||
{
|
||||
VM_TRACE_END();
|
||||
if (zend_handlers_table) {
|
||||
zend_hash_destroy(zend_handlers_table);
|
||||
free(zend_handlers_table);
|
||||
zend_handlers_table = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static HashTable *zend_handlers_table = NULL;
|
||||
|
||||
static void init_opcode_serialiser(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -16,6 +16,9 @@ if (PHP_LIBXML == "yes") {
|
||||
ADD_DEF_FILE("ext\\libxml\\php_libxml2.def");
|
||||
}
|
||||
PHP_INSTALL_HEADERS("ext/libxml/", "php_libxml.h");
|
||||
if (PHP_CRT_DEBUG == "yes") {
|
||||
ADD_FLAG("CFLAGS_LIBXML", "/D PHP_WIN32_DEBUG_HEAP");
|
||||
}
|
||||
} else {
|
||||
WARNING("libxml support can't be enabled, iconv or libxml are missing")
|
||||
PHP_LIBXML = "no"
|
||||
|
@ -700,7 +700,9 @@ PHP_LIBXML_API void php_libxml_initialize(void)
|
||||
{
|
||||
if (!_php_libxml_initialized) {
|
||||
/* we should be the only one's to ever init!! */
|
||||
ZEND_IGNORE_LEAKS_BEGIN();
|
||||
xmlInitParser();
|
||||
ZEND_IGNORE_LEAKS_END();
|
||||
|
||||
_php_libxml_default_entity_loader = xmlGetExternalEntityLoader();
|
||||
xmlSetExternalEntityLoader(_php_libxml_pre_ext_ent_loader);
|
||||
|
Loading…
Reference in New Issue
Block a user