]> granicus.if.org Git - php/commitdiff
proper fix
authorDmitry Stogov <dmitry@php.net>
Tue, 20 May 2008 07:41:48 +0000 (07:41 +0000)
committerDmitry Stogov <dmitry@php.net>
Tue, 20 May 2008 07:41:48 +0000 (07:41 +0000)
TSRM/tsrm_virtual_cwd.c

index 01cadbd4a71bdf9cb77da3641a1cafc50bdc1898..62ae7faf47207e802bab10711ef4651babb54736 100644 (file)
@@ -491,6 +491,7 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
        int use_relative_path = 0;
 #ifdef TSRM_WIN32
        int is_unc;
+       int exists;
 #endif
        TSRMLS_FETCH();
 
@@ -589,6 +590,7 @@ no_realpath:
                CWD_STATE_COPY(&old_state, state);
 
 #ifdef TSRM_WIN32
+               exists = (use_realpath != CWD_EXPAND);
                ret = 0;
                is_unc = 0;
                if (path_length >= 2 && path[1] == ':') {                       
@@ -696,13 +698,16 @@ no_realpath:
                                                ptr_length = length;
                                                FindClose(hFind);
                                                ret = 0;
-                                       } else if (use_realpath == CWD_REALPATH) {
+                                       } else {
                                                if (is_unc) {
                                                        /* skip share name */
                                                        is_unc--;
                                                        ret = 0;
                                                } else {
-                                                       ret = 1;
+                                                       exists = 0;
+                                                       if (use_realpath == CWD_REALPATH) {
+                                                               ret = 1;
+                                                       }
                                                }
                                        }
                                }
@@ -743,7 +748,7 @@ no_realpath:
 
        /* Store existent file in realpath cache. */
 #ifdef TSRM_WIN32
-       if (use_cache && !is_unc && (use_realpath == CWD_REALPATH)) {
+       if (use_cache && !is_unc && exists) {
 #else
        if (use_cache && (use_realpath == CWD_REALPATH)) {
 #endif