25
25
#include "zend_interfaces.h"
26
26
27
27
#define TOKEN_LIST_GET_INTERNAL () php_dom_token_list_from_obj(Z_OBJ_P(ZEND_THIS))
28
- #define TOKEN_LIST_GET_SET (intern ) intern->dom.ptr
28
+ #define TOKEN_LIST_GET_SET (intern ) (&( intern)->token_set)
29
29
#define Z_TOKEN_LIST_P (zv ) php_dom_token_list_from_obj(Z_OBJ_P(zv))
30
30
31
31
typedef struct _dom_token_list_it {
@@ -119,7 +119,8 @@ static char *dom_ordered_set_serializer(HashTable *token_set)
119
119
120
120
static zend_always_inline xmlNode * dom_token_list_get_element (dom_token_list_object * intern )
121
121
{
122
- return intern -> element_ptr -> node ;
122
+ php_libxml_node_ptr * element_ptr = intern -> dom .ptr ;
123
+ return element_ptr -> node ;
123
124
}
124
125
125
126
static zend_always_inline const xmlAttr * dom_token_list_get_attr (dom_token_list_object * intern )
@@ -192,13 +193,12 @@ void dom_token_list_ctor(dom_token_list_object *intern, dom_object *element_obj)
192
193
{
193
194
php_libxml_node_ptr * ptr = element_obj -> ptr ;
194
195
ptr -> refcount ++ ;
195
- intern -> element_ptr = ptr ;
196
+ intern -> dom . ptr = ptr ;
196
197
element_obj -> document -> refcount ++ ;
197
198
intern -> dom .document = element_obj -> document ;
198
199
199
200
intern -> cache_tag .modification_nr = 0 ;
200
201
201
- ALLOC_HASHTABLE (TOKEN_LIST_GET_SET (intern ));
202
202
HashTable * token_set = TOKEN_LIST_GET_SET (intern );
203
203
zend_hash_init (token_set , 0 , NULL , NULL , false);
204
204
@@ -211,15 +211,14 @@ void dom_token_list_free_obj(zend_object *object)
211
211
212
212
zend_object_std_dtor (object );
213
213
214
- if (EXPECTED (intern -> element_ptr != NULL )) { /* Object initialized? */
214
+ if (EXPECTED (intern -> dom . ptr != NULL )) { /* Object initialized? */
215
215
xmlNodePtr node = dom_token_list_get_element (intern );
216
- if (php_libxml_decrement_node_ptr_ref (intern -> element_ptr ) == 0 ) {
216
+ if (php_libxml_decrement_node_ptr_ref (intern -> dom . ptr ) == 0 ) {
217
217
php_libxml_node_free_resource (node );
218
218
}
219
219
php_libxml_decrement_doc_ref ((php_libxml_node_object * ) & intern -> dom );
220
220
HashTable * token_set = TOKEN_LIST_GET_SET (intern );
221
221
zend_hash_destroy (token_set );
222
- FREE_HASHTABLE (token_set );
223
222
efree (intern -> cached_string );
224
223
}
225
224
}
@@ -326,7 +325,7 @@ zend_result dom_token_list_length_read(dom_object *obj, zval *retval)
326
325
{
327
326
dom_token_list_object * token_list = php_dom_token_list_from_dom_obj (obj );
328
327
dom_token_list_ensure_set_up_to_date (token_list );
329
- ZVAL_LONG (retval , zend_hash_num_elements (obj -> ptr ));
328
+ ZVAL_LONG (retval , zend_hash_num_elements (TOKEN_LIST_GET_SET ( token_list ) ));
330
329
return SUCCESS ;
331
330
}
332
331
0 commit comments