]> granicus.if.org Git - php/commitdiff
- Flush on changes
authorMarcus Boerger <helly@php.net>
Mon, 14 May 2007 18:11:53 +0000 (18:11 +0000)
committerMarcus Boerger <helly@php.net>
Mon, 14 May 2007 18:11:53 +0000 (18:11 +0000)
ext/phar/phar_object.c

index a226e558a1d96d67fb27e233c1b949f8405fb832..aea802a7b3a394ac92772abd3c497cebf985626e 100755 (executable)
@@ -1056,6 +1056,7 @@ PHP_METHOD(PharFileInfo, getMetadata)
  */
 PHP_METHOD(PharFileInfo, setMetadata)
 {
+       char *error;
        zval *metadata;
        PHAR_ENTRY_OBJECT();
 
@@ -1070,6 +1071,12 @@ PHP_METHOD(PharFileInfo, setMetadata)
 
        MAKE_STD_ZVAL(entry_obj->ent.entry->metadata);
        ZVAL_ZVAL(entry_obj->ent.entry->metadata, metadata, 1, 0);
+
+       phar_flush(entry_obj->ent.entry->phar, 0, 0, &error TSRMLS_CC);
+       if (error) {
+               zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, error);
+               efree(error);
+       }
 }
 /* }}} */
 
@@ -1078,12 +1085,21 @@ PHP_METHOD(PharFileInfo, setMetadata)
  */
 PHP_METHOD(PharFileInfo, delMetadata)
 {
+       char *error;
        PHAR_ENTRY_OBJECT();
 
        if (entry_obj->ent.entry->metadata) {
                zval_ptr_dtor(&entry_obj->ent.entry->metadata);
                entry_obj->ent.entry->metadata = NULL;
-               RETURN_TRUE;
+
+               phar_flush(entry_obj->ent.entry->phar, 0, 0, &error TSRMLS_CC);
+               if (error) {
+                       zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, error);
+                       efree(error);
+                       RETURN_FALSE;
+               } else {
+                       RETURN_TRUE;
+               }
        } else {
                RETURN_FALSE;
        }