]> granicus.if.org Git - php/commitdiff
minor performance improvement
authorGreg Beaver <cellog@php.net>
Fri, 20 Jun 2008 06:37:14 +0000 (06:37 +0000)
committerGreg Beaver <cellog@php.net>
Fri, 20 Jun 2008 06:37:14 +0000 (06:37 +0000)
ext/phar/phar.phar
ext/phar/util.c

index 70cdf8b9e2c176ced2b0e8681f01f6110b50af03..170c4a8860a154cd199c087be054e3974a5a0af0 100755 (executable)
Binary files a/ext/phar/phar.phar and b/ext/phar/phar.phar differ
index 30bb5a0d419e241b2fa2ddc4277603347ca0b660..8f39cd61abdd674ed4ced14ef8deba884fe3859d 100644 (file)
@@ -251,6 +251,12 @@ char *phar_find_in_include_path(char *filename, int filename_len, phar_archive_d
        fname = zend_get_executed_filename(TSRMLS_C);
        fname_len = strlen(fname);
 
+       if (PHAR_G(last_phar) && !memcmp(fname, "phar://", 7) && fname_len - 7 >= PHAR_G(last_phar_name_len) && !memcmp(fname + 7, PHAR_G(last_phar_name), PHAR_G(last_phar_name_len))) {
+               arch = estrndup(PHAR_G(last_phar_name), PHAR_G(last_phar_name_len));
+               arch_len = PHAR_G(last_phar_name_len);
+               phar = PHAR_G(last_phar);
+               goto splitted;
+       }
        if (fname_len < 7 || memcmp(fname, "phar://", 7) || SUCCESS != phar_split_fname(fname, strlen(fname), &arch, &arch_len, &entry, &entry_len, 1, 0 TSRMLS_CC)) {
                return phar_save_resolve_path(filename, filename_len TSRMLS_CC);
        }
@@ -262,6 +268,7 @@ char *phar_find_in_include_path(char *filename, int filename_len, phar_archive_d
                        efree(arch);
                        return phar_save_resolve_path(filename, filename_len TSRMLS_CC);
                }
+splitted:
                if (pphar) {
                        *pphar = phar;
                }