Changeset 17912
- Timestamp:
- 10/04/08 12:24:59 (2 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/branch-1-9/midgard/apis/php5/php_midgard_gobject.h
r17483 r17912 53 53 const unsigned char *buffer, zend_uint buf_len, zend_unserialize_data *data TSRMLS_CC); 54 54 55 void php_midgard_gobject_unset_property(zval *object, zval *member TSRMLS_CC); 56 55 57 /* SIGNALS */ 56 58 void php_midgard_gobject_connect(INTERNAL_FUNCTION_PARAMETERS); branches/branch-1-9/midgard/apis/php5/php_midgard_gobject_generic.c
r17490 r17912 542 542 543 543 return; 544 } 545 546 void php_midgard_gobject_unset_property(zval *object, zval *member TSRMLS_DC) 547 { 548 zend_class_entry *ce = Z_OBJCE_P(object); 549 550 SEPARATE_ARG_IF_REF(member); 551 zend_call_method_with_1_params(&object, ce, &ce->__unset, ZEND_UNSET_FUNC_NAME, NULL, member); 552 zval_ptr_dtor(&member); 544 553 } 545 554 … … 700 709 701 710 if(Z_TYPE_PP(zvalue) == IS_OBJECT) { 702 //g_print("DTOR '%s'\n", Z_OBJCE_PP(zvalue)->name); 703 zend_object *pzo = zend_objects_get_address(*zvalue TSRMLS_CC); 704 zend_object_handle zo_handle = Z_OBJ_HANDLE_P(*zvalue); 711 //zend_object *pzo = zend_objects_get_address(*zvalue TSRMLS_CC); 712 //zend_object_handle zo_handle = Z_OBJ_HANDLE_P(*zvalue); 713 //php_midgard_gobject *php_gobject = 714 // (php_midgard_gobject *)zend_object_store_get_object(*zvalue TSRMLS_CC); 715 716 //(*zvalue)->refcount--; 705 717 //zend_objects_free_object_storage(pzo TSRMLS_CC); 718 //pzo = NULL; 706 719 //zend_objects_destroy_object(pzo, zo_handle TSRMLS_CC); 707 //__php_midgard_gobject_dtor((void *) pzo TSRMLS_CC); 720 //__php_midgard_gobject_dtor((void *) php_gobject TSRMLS_CC); 721 //php_gobject = NULL; 722 //php_gobject = NULL; 708 723 //zval_dtor(*zvalue); 709 zend_object_std_dtor(pzo TSRMLS_CC); 710 //zval_dtor(*zvalue); 711 //efree(*zvalue); 712 713 } else { 714 724 725 //zend_object_std_dtor(pzo TSRMLS_CC); 726 //zend_objects_destroy_object(pzo, zo_handle TSRMLS_CC); 715 727 zval_dtor(*zvalue); 716 728 efree(*zvalue); 717 } 718 729 //efree(pzo); 730 731 } 719 732 zend_hash_move_forward_ex(props, &iterator); 720 733 } … … 732 745 return; 733 746 747 if(&php_gobject->zo == NULL) 748 return; 749 734 750 zend_object_std_dtor(&php_gobject->zo TSRMLS_CC); 735 751 … … 740 756 741 757 } else if(G_OBJECT_TYPE_NAME(G_OBJECT(php_gobject->gobject)) != NULL){ 742 758 743 759 if(G_IS_OBJECT(php_gobject->gobject)) { 744 745 760 //__object_properties_dtor(&php_gobject->zo); 746 761 g_object_unref(G_OBJECT(php_gobject->gobject)); … … 750 765 751 766 php_gobject->gobject = NULL; 752 753 767 efree(php_gobject); 754 768 755 769 php_gobject = NULL; 770 object = NULL; 756 771 } 757 772 … … 792 807 php_midgard_get_baseclass_ptr_by_name(G_OBJECT_TYPE_NAME(prop_gobject)); 793 808 794 object_init_ex(prop_zobject, ce); 795 php_midgard_gobject_new_with_gobject(prop_zobject, ce, prop_gobject, TRUE); /* SHOULD BE SET TO TRUE */796 797 zval *zprop;798 MAKE_STD_ZVAL(zprop);799 php_midgard_gvalue2zval(&oval, zprop); 809 object_init_ex(prop_zobject, ce); 810 811 php_midgard_gobject *php_gobject = 812 (php_midgard_gobject *)zend_object_store_get_object(prop_zobject TSRMLS_CC); 813 php_gobject->gobject = prop_gobject; 814 800 815 zend_update_property(Z_OBJCE_P(zobject), zobject, 801 816 pspecs[i]->name, strlen(pspecs[i]->name), 802 zpropTSRMLS_CC);817 prop_zobject TSRMLS_CC); 803 818 804 819 g_value_unset(&oval);
