From: Zeev Suraski Date: Sat, 29 Jul 2000 10:44:13 +0000 (+0000) Subject: Fix filename issues X-Git-Tag: PRE_FILE_COMPILE_API_CHANGE~84 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=735a0d148ea2a0154b000895bcdf97ddd5a4b8ef;p=php Fix filename issues --- diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l index a2589713bf..4619ce4a18 100644 --- a/Zend/zend-scanner.l +++ b/Zend/zend-scanner.l @@ -243,10 +243,7 @@ ZEND_API void zend_close_file_handle(zend_file_handle *file_handle CLS_DC) ZEND_API int open_file_for_scanning(zend_file_handle *file_handle CLS_DC) { - char *file_path = file_handle->opened_path; - if(!file_path) { - file_path = file_handle->filename; - } + char *file_path; #ifndef ZTS switch (file_handle->type) { @@ -255,10 +252,12 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle CLS_DC) file_path = file_handle->opened_path; break; case ZEND_HANDLE_FD: + file_path = file_handle->filename; file_handle->opened_path = NULL; file_handle->handle.fp = fdopen(file_handle->handle.fd, "r"); break; case ZEND_HANDLE_FP: + file_path = file_handle->filename; file_handle->opened_path = NULL; file_handle->handle.fp = file_handle->handle.fp; break; @@ -304,6 +303,9 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle CLS_DC) } break; } + + file_path = file_handle->filename; + if (file_handle->handle.is->fail()) { delete file_handle->handle.is; return FAILURE; diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index d15cedb12d..4706bcc181 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2039,9 +2039,13 @@ send_by_ref: file_handle.handle.fp = zend_fopen(inc_filename->value.str.val, &opened_path); file_handle.type = ZEND_HANDLE_FP; - file_handle.filename = inc_filename->value.str.val; - file_handle.opened_path = opened_path; - file_handle.free_filename = 0; + if (opened_path) { + file_handle.filename = estrdup(opened_path); + file_handle.free_filename = 1; + } else { + file_handle.filename = inc_filename->value.str.val; + file_handle.free_filename = 0; + } if (file_handle.handle.fp) { if (!opened_path || zend_hash_add(&EG(included_files), opened_path, strlen(opened_path)+1, (void *)&dummy, sizeof(int), NULL)==SUCCESS) { @@ -2054,12 +2058,12 @@ send_by_ref: } else { fclose(file_handle.handle.fp); } - if (opened_path) { - free(opened_path); - } } else { zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle.filename); } + if (opened_path) { + free (opened_path); + } break; } break;