]> granicus.if.org Git - php/commitdiff
Cleanup (avoid reallocation).
authorDmitry Stogov <dmitry@zend.com>
Wed, 1 Jul 2015 11:08:54 +0000 (14:08 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 1 Jul 2015 11:08:54 +0000 (14:08 +0300)
ext/spl/spl_directory.c

index a7d8a325636392f2bb96da3986c4fda51d50cd78..bf23c644c91c86bb059947454d1113fa8f54990d 100644 (file)
@@ -1546,8 +1546,6 @@ SPL_METHOD(RecursiveDirectoryIterator, getSubPath)
 SPL_METHOD(RecursiveDirectoryIterator, getSubPathname)
 {
        spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis());
-       char *sub_name;
-       size_t len;
        char slash = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_UNIXPATHS) ? '/' : DEFAULT_SLASH;
 
        if (zend_parse_parameters_none() == FAILURE) {
@@ -1555,9 +1553,7 @@ SPL_METHOD(RecursiveDirectoryIterator, getSubPathname)
        }
 
        if (intern->u.dir.sub_path) {
-               len = spprintf(&sub_name, 0, "%s%c%s", intern->u.dir.sub_path, slash, intern->u.dir.entry.d_name);
-               RETVAL_STRINGL(sub_name, len);
-               efree(sub_name);
+               RETURN_NEW_STR(strpprintf(0, "%s%c%s", intern->u.dir.sub_path, slash, intern->u.dir.entry.d_name));
        } else {
                RETURN_STRING(intern->u.dir.entry.d_name);
        }