@@ -81,7 +81,7 @@ static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handl
81
81
if (hnd -> read_int_func ) {
82
82
retint = hnd -> read_int_func (obj -> ptr );
83
83
if (retint == -1 ) {
84
- zend_throw_error (NULL , "Failed to read property due to libxml error " );
84
+ zend_throw_error (NULL , "Failed to read property because no XML data has been read yet " );
85
85
return FAILURE ;
86
86
}
87
87
}
@@ -175,6 +175,28 @@ static zend_function *xmlreader_get_method(zend_object **obj, zend_string *name,
175
175
}
176
176
/* }}} */
177
177
178
+ static HashTable * xmlreader_get_debug_info (zend_object * object , int * is_temp )
179
+ {
180
+ * is_temp = 1 ;
181
+
182
+ xmlreader_object * obj = php_xmlreader_fetch_object (object );
183
+ HashTable * std_props = zend_std_get_properties (object );
184
+ HashTable * debug_info = zend_array_dup (std_props );
185
+
186
+ zend_string * string_key ;
187
+ xmlreader_prop_handler * entry ;
188
+ ZEND_HASH_MAP_FOREACH_STR_KEY_PTR (& xmlreader_prop_handlers , string_key , entry ) {
189
+ ZEND_ASSERT (string_key != NULL );
190
+
191
+ zval value ;
192
+ if (xmlreader_property_reader (obj , entry , & value ) == SUCCESS ) {
193
+ zend_hash_update (debug_info , string_key , & value );
194
+ }
195
+ } ZEND_HASH_FOREACH_END ();
196
+
197
+ return debug_info ;
198
+ }
199
+
178
200
/* {{{ _xmlreader_get_valid_file_path */
179
201
/* _xmlreader_get_valid_file_path and _xmlreader_get_relaxNG should be made a
180
202
common function in libxml extension as code is common to a few xml extensions */
@@ -1272,6 +1294,7 @@ PHP_MINIT_FUNCTION(xmlreader)
1272
1294
xmlreader_object_handlers .get_property_ptr_ptr = xmlreader_get_property_ptr_ptr ;
1273
1295
xmlreader_object_handlers .get_method = xmlreader_get_method ;
1274
1296
xmlreader_object_handlers .clone_obj = NULL ;
1297
+ xmlreader_object_handlers .get_debug_info = xmlreader_get_debug_info ;
1275
1298
1276
1299
xmlreader_class_entry = register_class_XMLReader ();
1277
1300
xmlreader_class_entry -> create_object = xmlreader_objects_new ;
0 commit comments