]> granicus.if.org Git - php/commitdiff
Fix invalid free
authorArnaud Le Blanc <lbarnaud@php.net>
Thu, 11 Sep 2008 15:45:29 +0000 (15:45 +0000)
committerArnaud Le Blanc <lbarnaud@php.net>
Thu, 11 Sep 2008 15:45:29 +0000 (15:45 +0000)
ext/spl/spl_directory.c

index 1da3ae9f1fa6ce62a66d38e1a6071b9cb909e98f..31c92aa67c40da6a1707e72cb042cda625b34b2f 100755 (executable)
@@ -1163,6 +1163,7 @@ SPL_METHOD(SplFileInfo, getRealPath)
        UChar *path;
        int filename_len, path_len;
        char *filename, buff[MAXPATHLEN];
+       zend_bool free_filename = 0;
 
        zend_replace_error_handling(EH_THROW, spl_ce_RuntimeException, NULL TSRMLS_CC);
 
@@ -1175,6 +1176,7 @@ SPL_METHOD(SplFileInfo, getRealPath)
        } else {
                if (intern->file_name_type == IS_UNICODE) {
                        php_stream_path_encode(NULL, &filename, &filename_len, intern->file_name.u, intern->file_name_len, REPORT_ERRORS, FG(default_context));
+                       free_filename = filename != NULL;
                } else {
                        filename = intern->file_name.s;
                }
@@ -1199,7 +1201,7 @@ SPL_METHOD(SplFileInfo, getRealPath)
                RETVAL_FALSE;
        }
 
-       if (intern->file_name_type == IS_UNICODE && filename) {
+       if (free_filename) {
                efree(filename);
        }
 }