X-Git-Url: https://git.rapsys.eu/bbcode/blobdiff_plain/72cacff6db32c7def98fd82e2abd60c74ba6913a..a839ba5c656f9f48513336ad63a269acde468786:/bbcode.c diff --git a/bbcode.c b/bbcode.c index 3a9ac76..863d84f 100644 --- a/bbcode.c +++ b/bbcode.c @@ -18,11 +18,12 @@ typedef struct _bbcode_object { zval *smiley; zval *flag;*/ zend_long flag; - zend_object_handlers bbcode_handlers; zend_object std; } bbcode_object; /* True global resources - no need for thread safety here */ +zend_object_handlers bbcode_handlers; + /* BBCode object */ zend_class_entry *bbcode_ce; @@ -109,18 +110,14 @@ static zend_object *bbcode_clone(zval *obj TSRMLS_DC) { bbcode_object *oldobj = (bbcode_object *)((char *)obj - XtOffsetOf(bbcode_object, std)); + printf("bbcode_clone=%d\n", sizeof(bbcode_object) + zend_object_properties_size(Z_OBJCE_P(obj))); + bbcode_object *newobj = ecalloc(1, sizeof(bbcode_object) + zend_object_properties_size(Z_OBJCE_P(obj))); zend_object_std_init(&newobj->std, Z_OBJCE_P(obj) TSRMLS_CC); object_properties_init(&newobj->std, Z_OBJCE_P(obj) TSRMLS_CC); - memcpy(&newobj->bbcode_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - newobj->bbcode_handlers.offset = XtOffsetOf(bbcode_object, std); - newobj->bbcode_handlers.dtor_obj = (zend_object_dtor_obj_t) bbcode_destroy; - newobj->bbcode_handlers.free_obj = (zend_object_free_obj_t) bbcode_free; - newobj->bbcode_handlers.clone_obj = (zend_object_clone_obj_t) bbcode_clone; - - newobj->std.handlers = &(newobj->bbcode_handlers); + //newobj->std.handlers = &bbcode_handlers; zend_objects_clone_members(&newobj->std, &oldobj->std); @@ -170,6 +167,8 @@ static zend_object_value bbcode_clone(zval *obj TSRMLS_DC) #endif static zend_object *bbcode_create(zend_class_entry *ce TSRMLS_DC) { + printf("bbcode_clone=%d\n", sizeof(bbcode_object) + zend_object_properties_size(ce)); + bbcode_object *obj = ecalloc(1, sizeof(bbcode_object) + zend_object_properties_size(ce));//emalloc(sizeof(bbcode_object)); obj->flag = 0; //memset(obj, 0, sizeof(bbcode_object)); @@ -179,11 +178,11 @@ static zend_object *bbcode_create(zend_class_entry *ce TSRMLS_DC) { /**/ - memcpy(&obj->bbcode_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - obj->bbcode_handlers.offset = XtOffsetOf(bbcode_object, std); - obj->bbcode_handlers.dtor_obj = (zend_object_dtor_obj_t) bbcode_destroy; - obj->bbcode_handlers.free_obj = (zend_object_free_obj_t) bbcode_free; - obj->bbcode_handlers.clone_obj = (zend_object_clone_obj_t) bbcode_clone; + memcpy(&bbcode_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + bbcode_handlers.offset = XtOffsetOf(bbcode_object, std); + bbcode_handlers.dtor_obj = (zend_object_dtor_obj_t) bbcode_destroy; + bbcode_handlers.free_obj = (zend_object_free_obj_t) bbcode_free; + bbcode_handlers.clone_obj = (zend_object_clone_obj_t) bbcode_clone; //bbcode_handlers.offset = XtOffsetOf(bbcode_object, std); //bbcode_handlers.dtor_obj = (zend_object_dtor_obj_t) bbcode_destroy; //bbcode_handlers.free_obj = (zend_object_free_obj_t) bbcode_free; @@ -200,7 +199,7 @@ static zend_object *bbcode_create(zend_class_entry *ce TSRMLS_DC) { return retval;*/ - obj->std.handlers = &(obj->bbcode_handlers); + obj->std.handlers = &bbcode_handlers; return &obj->std; }