diff options
Diffstat (limited to 'ext/phar/phar_object.c')
-rw-r--r-- | ext/phar/phar_object.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index 4c49003ceb..aaa27bf001 100644 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -1241,7 +1241,7 @@ PHP_METHOD(Phar, __construct) ZVAL_STRINGL(&arg1, fname, fname_len); ZVAL_LONG(&arg2, flags); - zend_call_method_with_2_params(zobj, Z_OBJCE_P(zobj), + zend_call_method_with_2_params(Z_OBJ_P(zobj), Z_OBJCE_P(zobj), &spl_ce_RecursiveDirectoryIterator->constructor, "__construct", NULL, &arg1, &arg2); zval_ptr_dtor(&arg1); @@ -1388,6 +1388,10 @@ PHP_METHOD(Phar, __destruct) zval *zobj = ZEND_THIS; phar_archive_object *phar_obj = (phar_archive_object*)((char*)Z_OBJ_P(zobj) - Z_OBJ_P(zobj)->handlers->offset); + if (zend_parse_parameters_none() == FAILURE) { + return; + } + if (phar_obj->archive && phar_obj->archive->is_persistent) { zend_hash_str_del(&PHAR_G(phar_persist_map), (const char *) phar_obj->archive, sizeof(phar_obj->archive)); } @@ -1748,7 +1752,7 @@ PHP_METHOD(Phar, buildFromDirectory) ZVAL_STRINGL(&arg, dir, dir_len); ZVAL_LONG(&arg2, SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS); - zend_call_method_with_2_params(&iter, spl_ce_RecursiveDirectoryIterator, + zend_call_method_with_2_params(Z_OBJ(iter), spl_ce_RecursiveDirectoryIterator, &spl_ce_RecursiveDirectoryIterator->constructor, "__construct", NULL, &arg, &arg2); zval_ptr_dtor(&arg); @@ -1764,7 +1768,7 @@ PHP_METHOD(Phar, buildFromDirectory) RETURN_FALSE; } - zend_call_method_with_1_params(&iteriter, spl_ce_RecursiveIteratorIterator, + zend_call_method_with_1_params(Z_OBJ(iteriter), spl_ce_RecursiveIteratorIterator, &spl_ce_RecursiveIteratorIterator->constructor, "__construct", NULL, &iter); if (EG(exception)) { @@ -1787,7 +1791,7 @@ PHP_METHOD(Phar, buildFromDirectory) ZVAL_STRINGL(&arg2, regex, regex_len); - zend_call_method_with_2_params(®exiter, spl_ce_RegexIterator, + zend_call_method_with_2_params(Z_OBJ(regexiter), spl_ce_RegexIterator, &spl_ce_RegexIterator->constructor, "__construct", NULL, &iteriter, &arg2); zval_ptr_dtor(&arg2); } @@ -2240,7 +2244,7 @@ its_ok: ZVAL_STRINGL(&arg1, phar->fname, phar->fname_len); - zend_call_method_with_1_params(&ret, ce, &ce->constructor, "__construct", NULL, &arg1); + zend_call_method_with_1_params(Z_OBJ(ret), ce, &ce->constructor, "__construct", NULL, &arg1); zval_ptr_dtor(&arg1); return Z_OBJ(ret); } @@ -4024,6 +4028,10 @@ PHP_METHOD(Phar, hasMetadata) { PHAR_ARCHIVE_OBJECT(); + if (zend_parse_parameters_none() == FAILURE) { + return; + } + RETURN_BOOL(Z_TYPE(phar_obj->archive->metadata) != IS_UNDEF); } /* }}} */ @@ -4105,6 +4113,10 @@ PHP_METHOD(Phar, delMetadata) return; } + if (zend_parse_parameters_none() == FAILURE) { + return; + } + if (Z_TYPE(phar_obj->archive->metadata) != IS_UNDEF) { zval_ptr_dtor(&phar_obj->archive->metadata); ZVAL_UNDEF(&phar_obj->archive->metadata); @@ -4513,7 +4525,7 @@ PHP_METHOD(PharFileInfo, __construct) ZVAL_STRINGL(&arg1, fname, fname_len); - zend_call_method_with_1_params(zobj, Z_OBJCE_P(zobj), + zend_call_method_with_1_params(Z_OBJ_P(zobj), Z_OBJCE_P(zobj), &spl_ce_SplFileInfo->constructor, "__construct", NULL, &arg1); zval_ptr_dtor(&arg1); |