]> granicus.if.org Git - php/commitdiff
Fixed bug #40231 (file_exists incorrectly reports false)
authorDmitry Stogov <dmitry@php.net>
Fri, 26 Jan 2007 15:15:32 +0000 (15:15 +0000)
committerDmitry Stogov <dmitry@php.net>
Fri, 26 Jan 2007 15:15:32 +0000 (15:15 +0000)
TSRM/tsrm_virtual_cwd.c

index d91f8ff6099924b12e9c608bcaf0f3b42644b9d5..e746353fed095ef9cf341ff305134f679f9f39b4 100644 (file)
@@ -549,6 +549,9 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
                char *ptr, *path_copy, *free_path;
                char *tok = NULL;
                int ptr_length;
+#ifdef TSRM_WIN32
+               int is_unc = 0;
+#endif
 
 no_realpath:
 
@@ -569,6 +572,7 @@ no_realpath:
                        state->cwd[1] = '\0';
                        state->cwd_length = 1;
                        path_copy += 2;
+                       is_unc = 2;
                } else {
 #endif
                        state->cwd = (char *) realloc(state->cwd, 1);
@@ -648,10 +652,14 @@ no_realpath:
                                                ptr_length = length;
                                                FindClose(hFind);
                                        } else if (use_realpath == CWD_REALPATH) {
-                                               free(free_path);
-                                               CWD_STATE_FREE(state);
-                                               *state = old_state;                                     
-                                               return 1;
+                                               if (is_unc) {
+                                                       is_unc--;
+                                               } else {
+                                                       free(free_path);
+                                                       CWD_STATE_FREE(state);
+                                                       *state = old_state;                                     
+                                                       return 1;
+                                               }
                                        }
                                }
 #endif