]> granicus.if.org Git - php/commitdiff
Fix filename issues
authorZeev Suraski <zeev@php.net>
Sat, 29 Jul 2000 10:44:13 +0000 (10:44 +0000)
committerZeev Suraski <zeev@php.net>
Sat, 29 Jul 2000 10:44:13 +0000 (10:44 +0000)
Zend/zend-scanner.l
Zend/zend_execute.c

index a2589713bf68c87776a3e5ee4de40457869e43e9..4619ce4a18eb334a1a1139896afe1d5d3da74bba 100644 (file)
@@ -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;
index d15cedb12d0343e89292fec82ac62d57a25a4917..4706bcc18192abc57aeaf394a9ff05775ccf74d6 100644 (file)
@@ -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;