From: Arnaud Le Blanc Date: Thu, 11 Sep 2008 15:45:29 +0000 (+0000) Subject: Fix invalid free X-Git-Tag: BEFORE_HEAD_NS_CHANGE~427 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8483399c08c5621414836e80e8cb4a6e95f75618;p=php Fix invalid free --- diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 1da3ae9f1f..31c92aa67c 100755 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -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); } }