summaryrefslogtreecommitdiff
path: root/main/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/main.c')
-rw-r--r--main/main.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/main/main.c b/main/main.c
index 49f4d1eae3..4c1b34cec2 100644
--- a/main/main.c
+++ b/main/main.c
@@ -353,10 +353,10 @@ PHPAPI void php_error(int type, const char *format,...)
uint error_lineno;
char buffer[1024];
int size = 0;
+ CLS_FETCH();
ELS_FETCH();
PLS_FETCH();
-
switch (type) {
case E_CORE_ERROR:
case E_CORE_WARNING:
@@ -365,21 +365,20 @@ PHPAPI void php_error(int type, const char *format,...)
break;
case E_PARSE:
case E_COMPILE_ERROR:
- case E_COMPILE_WARNING: {
- CLS_FETCH();
-
- error_filename = zend_get_compiled_filename();
- error_lineno = CG(zend_lineno);
- if (!error_filename) {
- error_filename = zend_get_executed_filename(ELS_C);
- }
- }
- break;
+ case E_COMPILE_WARNING:
case E_ERROR:
case E_NOTICE:
case E_WARNING:
- error_filename = zend_get_executed_filename(ELS_C);
- error_lineno = zend_get_executed_lineno(ELS_C);
+ if (zend_is_compiling()) {
+ error_filename = zend_get_compiled_filename(CLS_C);
+ error_lineno = zend_get_compiled_lineno(CLS_C);
+ } else if (zend_is_executing()) {
+ error_filename = zend_get_executed_filename(ELS_C);
+ error_lineno = zend_get_executed_lineno(ELS_C);
+ } else {
+ error_filename = NULL;
+ error_lineno = 0;
+ }
break;
default:
error_filename = NULL;