What engine are you working with 1 or 2?
-brad
--- "Tim Daly, Jr." <[EMAIL PROTECTED]> wrote:
>
> Hi everybody. I'm working on an extension that creates classes, and I
> want to add class variables to the classes. It looks like,
> internally, class variables are stored in the
> zend_class_entry.default_properties hash. Manipulating this hash has
> the effect desired, however I seem to have misunderstood the memory
> management issues somehow; the code below causes leaks and crashes.
>
> Is there an official way to add class variables to a class from C? Is
> there anything obviously wrong with the code below?
>
> Thanks!!
> -Tim
>
> static zend_class_entry *class_name_class_entry;
> static zend_class_entry tmp_class_entry;
>
> int add_default_property_null(zend_class_entry *class_entry,
> const char *name)
> {
> zval *property;
> int ret;
>
> MAKE_STD_ZVAL(property);
> ZVAL_NULL(property);
> return zend_hash_update(&class_entry->default_properties, name,
> strlen(name)+1, (void *)&property, sizeof(zval
> *), NULL);
> }
>
>
>
> int add_default_property_zval(zend_class_entry *class_entry,
> const char *name,
> zval **value)
> {
> zval *aval;
>
> MAKE_STD_ZVAL(aval);
> *aval = **value;
> zval_add_ref(&aval);
> zval_copy_ctor(aval);
> return zend_hash_update(&class_entry->default_properties, name,
> strlen(name)+1, (void *)&aval, sizeof(zval *),
> NULL);
> }
>
>
> void define_a_class()
> {
> /* make a class with two properties, one of which is an array */
> zval *wrapper;
> zval *array;
>
> INIT_CLASS_ENTRY(tmp_class_entry, "class_name", class_name_functions);
> class_name_class_entry = zend_register_internal_class(&tmp_class_entry);
>
> add_default_property_null(class_name_class_entry, "prop_name");
>
> MAKE_STD_ZVAL(array);
> array_init(array);
> add_next_index_string(array, "foo", 1);
> add_default_property_zval(class_name_class_entry, "prop_name1", &array);
>
> }
>
>
>
> --
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php
>
__________________________________________________
Do you Yahoo!?
Faith Hill - Exclusive Performances, Videos & More
http://faith.yahoo.com
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php