Hi Pierre,

Thank you for feedback.
You are definitely right about FindClose().
The failure of realpath_basic-win32.phpt is expected, as behavior of realpath() became the same as on Linux (slashes after regular file name are not allowed). I wasn't able to reproduce realpath_basic2.phpt failure (may be because I added missing FindClose()).

Thanks. Dmitry.

Pierre Joye wrote:
hi Dmitry,

On Sat, Aug 9, 2008 at 5:28 PM, Dmitry Stogov <[EMAIL PROTECTED]> wrote:
The improved patch fixes all the issues I found during testing.
However I wasn't able to test it on NETWARE and on Solaris with relative
paths.

Please test it as much as possible.

I run the test suite and the results can be seen here:

http://phpfi.com/341752

There is two failing for real path (Server 2008, Vista 64 and XP (32 and 64)):

Test realpath() function: basic functionality
[C:\Users\pierre\Documents\php-sdk\vc9\x86\php_5_3\ext\standard\tests\file\realpath_basic-win32.phpt]
realpath() with relative directory
[C:\Users\pierre\Documents\php-sdk\vc9\x86\php_5_3\ext\standard\tests\file\realpath_basic2.phpt]


Some other may fail because of a change in realpath behavior. I will
run them again without the patch and post again the affected tests.

I'm going to commit it on Tuesday in case of no objections.

A FindClose is missing:

+#ifdef TSRM_WIN32
+               if (save && (hFind = FindFirstFile(path, &data)) ==  
INVALID_HANDLE_VALUE) {
                       if (use_realpath == CWD_REALPATH) {
-                               return 1;
+                               /* file not found */
+                               return -1;
                       }

.....

+               if (save) {
+                       directory = (data.dwFileAttributes &  
FILE_ATTRIBUTE_DIRECTORY) != 0;
+                       if (is_dir && !directory) {
+                               /* not a directory */

FindClose(hFind);

+                               return -1;
+                       }
+               }
+               tmp = tsrm_do_alloca(len+1, use_heap);
+               memcpy(tmp, path, len+1);
+#elif defined(NETWARE)
+               save = 0;
+               tmp = tsrm_do_alloca(len+1, use_heap);
+               memcpy(tmp, path, len+1);
 #else

Cheers,

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to