summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-04-27 10:00:54 +0000
committerZeev Suraski <zeev@php.net>1999-04-27 10:00:54 +0000
commit1245356128de425b78ae9f69507ec89f16396644 (patch)
tree9e245b85a4eba0a9593ffbc3a933b8bb72af01ef
parent9b564535666d1d6e402b4f2f80c2a6ab1156d3f5 (diff)
downloadphp-git-1245356128de425b78ae9f69507ec89f16396644.tar.gz
* Get rid of the memory leak messages in case of fatal errors or exit()
* .dsp fixes * Minor fixes
-rw-r--r--main/configuration-parser.y18
-rw-r--r--main/configuration-scanner.l11
-rw-r--r--main/main.c11
-rw-r--r--main/php_globals.h1
-rw-r--r--php4dll.dsp4
-rw-r--r--php4dllts.dsp4
6 files changed, 40 insertions, 9 deletions
diff --git a/main/configuration-parser.y b/main/configuration-parser.y
index d5ca601051..a2ea934bb1 100644
--- a/main/configuration-parser.y
+++ b/main/configuration-parser.y
@@ -348,6 +348,8 @@ static void convert_browscap_pattern(pval *pattern)
%token EXTENSION
%token T_ZEND_EXTENSION
%token T_ZEND_EXTENSION_TS
+%token T_ZEND_EXTENSION_DEBUG
+%token T_ZEND_EXTENSION_DEBUG_TS
%%
@@ -380,13 +382,25 @@ statement:
php3_dl(&$3,MODULE_PERSISTENT,&dummy);
}
| T_ZEND_EXTENSION '=' string {
-#ifndef ZTS
+#if !defined(ZTS) && !defined(ZEND_DEBUG)
zend_load_extension($3.value.str.val);
#endif
free($3.value.str.val);
}
| T_ZEND_EXTENSION_TS '=' string {
-#ifdef ZTS
+#if defined(ZTS) && !defined(ZEND_DEBUG)
+ zend_load_extension($3.value.str.val);
+#endif
+ free($3.value.str.val);
+ }
+ | T_ZEND_EXTENSION_DEBUG '=' string {
+#if !defined(ZTS) && defined(ZEND_DEBUG)
+ zend_load_extension($3.value.str.val);
+#endif
+ free($3.value.str.val);
+ }
+ | T_ZEND_EXTENSION_DEBUG_TS '=' string {
+#if defined(ZTS) && defined(ZEND_DEBUG)
zend_load_extension($3.value.str.val);
#endif
free($3.value.str.val);
diff --git a/main/configuration-scanner.l b/main/configuration-scanner.l
index 709fbbbe64..e72a1c6ee9 100644
--- a/main/configuration-scanner.l
+++ b/main/configuration-scanner.l
@@ -64,6 +64,17 @@ void init_cfg_scanner()
return T_ZEND_EXTENSION_TS;
}
+
+<INITIAL>"zend_extension_debug" {
+ return T_ZEND_EXTENSION_DEBUG;
+}
+
+
+<INITIAL>"zend_extension_debug_ts" {
+ return T_ZEND_EXTENSION_DEBUG_TS;
+}
+
+
<INITIAL>[ ]*("true"|"on"|"yes")[ ]* {
cfglval->value.str.val = php3_strndup("1",1);
cfglval->value.str.len = 1;
diff --git a/main/main.c b/main/main.c
index 549a9da0c9..f2c4e589b0 100644
--- a/main/main.c
+++ b/main/main.c
@@ -597,8 +597,10 @@ static void php_message_handler_for_zend(long message, void *data)
-int php_request_startup(CLS_D ELS_DC PLS_DC SLS_DC)
+int php_request_startup(CLS_D ELS_DC PLS_DC)
{
+ PG(unclean_shutdown) = 0;
+
zend_output_startup();
php3_set_timeout(PG(max_execution_time));
@@ -629,7 +631,6 @@ int php_request_startup(CLS_D ELS_DC PLS_DC SLS_DC)
init_compiler(CLS_C ELS_CC);
init_executor(CLS_C ELS_CC);
-
startup_scanner(CLS_C);
@@ -659,6 +660,7 @@ void php_request_shutdown(void *dummy)
#endif
CLS_FETCH();
ELS_FETCH();
+ PLS_FETCH();
php3_header();
zend_end_ob_buffering(1);
@@ -673,7 +675,7 @@ void php_request_shutdown(void *dummy)
shutdown_executor(ELS_C);
php3_destroy_request_info(NULL);
- shutdown_memory_manager(0, 0);
+ shutdown_memory_manager(PG(unclean_shutdown), 0);
php3_unset_timeout();
@@ -1130,6 +1132,7 @@ PHPAPI void php_execute_script(zend_file_handle *primary_file CLS_DC ELS_DC PLS_
}
if (setjmp(EG(bailout))!=0) {
+ PG(unclean_shutdown) = 1;
return;
}
_php3_hash_environment(PLS_C);
@@ -1156,6 +1159,8 @@ PHPAPI void php_execute_script(zend_file_handle *primary_file CLS_DC ELS_DC PLS_
if (EG(main_op_array)) {
EG(active_op_array) = EG(main_op_array);
zend_execute(EG(main_op_array) ELS_CC);
+ } else {
+ PG(unclean_shutdown) = 1;
}
}
diff --git a/main/php_globals.h b/main/php_globals.h
index ce5405c930..48ad5441f7 100644
--- a/main/php_globals.h
+++ b/main/php_globals.h
@@ -65,6 +65,7 @@ struct _php_core_globals {
long y2k_compliance;
unsigned char header_is_being_sent;
+ unsigned char unclean_shutdown;
};
diff --git a/php4dll.dsp b/php4dll.dsp
index d8d27a8e9c..2671690df2 100644
--- a/php4dll.dsp
+++ b/php4dll.dsp
@@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "include" /I "..\libzend" /I "." /I "regex\\" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "LIBZEND_EXPORTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /D "WIN32" /D "_MBCS" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\libzend" /I "." /I "regex" /I "..\bindlib_w32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "LIBZEND_EXPORTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /D "WIN32" /D "_MBCS" /FR /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x40d /d "_DEBUG"
@@ -69,7 +69,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "..\libzend" /I "." /I "regex\\" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "LIBZEND_EXPORTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /D "WIN32" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\libzend" /I "." /I "regex" /I "..\bindlib_w32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "LIBZEND_EXPORTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /D "WIN32" /D "_MBCS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x40d /d "NDEBUG"
diff --git a/php4dllts.dsp b/php4dllts.dsp
index 8c9da25a1c..4a946e0de5 100644
--- a/php4dllts.dsp
+++ b/php4dllts.dsp
@@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "include" /I "..\libzend" /I "." /I "regex\\" /I "..\tsrm" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "WIN32" /D "_MBCS" /D "LIBZEND_EXPORTS" /D "ZTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\libzend" /I "." /I "regex\\" /I "..\tsrm" /I "..\bindlib_w32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "WIN32" /D "_MBCS" /D "LIBZEND_EXPORTS" /D "ZTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /FR /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x40d /d "_DEBUG"
@@ -69,7 +69,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "..\libzend" /I "." /I "regex\\" /I "..\tsrm" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "LIBZEND_EXPORTS" /D "ZTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /D "WIN32" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\libzend" /I "." /I "regex\\" /I "..\tsrm" /I "..\bindlib_w32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "PHP4DLLTS_EXPORTS" /D "MSVC5" /D "PHP_EXPORTS" /D "LIBZEND_EXPORTS" /D "ZTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /D "WIN32" /D "_MBCS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x40d /d "NDEBUG"