diff options
| -rw-r--r-- | Zend/zend-scanner.l | 8 | ||||
| -rw-r--r-- | Zend/zend.c | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l index a74148fc8c..ba18fbdcc0 100644 --- a/Zend/zend-scanner.l +++ b/Zend/zend-scanner.l @@ -167,11 +167,15 @@ ZEND_API void zend_close_file_handle(zend_file_handle *file_handle) close(file_handle->handle.fd); break; case ZEND_HANDLE_FP: - fclose(file_handle->handle.fp); + if (file_handle->handle.fp != stdin) { + fclose(file_handle->handle.fp); + } break; #ifdef ZTS case ZEND_HANDLE_ISTREAM: - delete file_handle->handle.is; + if (file_handle->handle.is != &cin) { + delete file_handle->handle.is; + } break; #endif } diff --git a/Zend/zend.c b/Zend/zend.c index ef436f8940..f9b0640d09 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -322,8 +322,10 @@ void zenderror(char *error) ZEND_API void zend_bailout() { + CLS_FETCH(); ELS_FETCH(); + CG(unclean_shutdown) = 1; longjmp(EG(bailout), FAILURE); } |
