@@ -35,9 +35,6 @@ struct _idsIterator {
35
35
xmlNode * element ;
36
36
};
37
37
38
- #define DOM_LOAD_STRING 0
39
- #define DOM_LOAD_FILE 1
40
-
41
38
/*
42
39
* class DOMDocument extends DOMNode
43
40
*
@@ -794,7 +791,7 @@ PHP_METHOD(DOMDocument, importNode)
794
791
if (nodep -> doc == docp ) {
795
792
retnodep = nodep ;
796
793
} else {
797
- retnodep = dom_clone_node (nodep , docp , recursive );
794
+ retnodep = dom_clone_node (nodep , docp , intern , recursive );
798
795
if (!retnodep ) {
799
796
RETURN_FALSE ;
800
797
}
@@ -1101,8 +1098,7 @@ PHP_METHOD(DOMDocument, normalizeDocument)
1101
1098
}
1102
1099
/* }}} end dom_document_normalize_document */
1103
1100
1104
- /* {{{ */
1105
- PHP_METHOD (DOMDocument , __construct )
1101
+ void php_dom_document_constructor (INTERNAL_FUNCTION_PARAMETERS )
1106
1102
{
1107
1103
xmlDoc * docp = NULL , * olddoc ;
1108
1104
dom_object * intern ;
@@ -1141,6 +1137,12 @@ PHP_METHOD(DOMDocument, __construct)
1141
1137
}
1142
1138
php_libxml_increment_node_ptr ((php_libxml_node_object * )intern , (xmlNodePtr )docp , (void * )intern );
1143
1139
}
1140
+
1141
+ /* {{{ */
1142
+ PHP_METHOD (DOMDocument , __construct )
1143
+ {
1144
+ php_dom_document_constructor (INTERNAL_FUNCTION_PARAM_PASSTHRU );
1145
+ }
1144
1146
/* }}} end DOMDocument::__construct */
1145
1147
1146
1148
char * _dom_get_valid_file_path (char * source , char * resolved_path , int resolved_path_len ) /* {{{ */
@@ -1310,14 +1312,15 @@ static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, size_t so
1310
1312
}
1311
1313
/* }}} */
1312
1314
1313
- static void dom_finish_loading_document (zval * this , zval * return_value , xmlDocPtr newdoc )
1315
+ void php_dom_finish_loading_document (zval * this , zval * return_value , xmlDocPtr newdoc )
1314
1316
{
1315
1317
if (!newdoc )
1316
1318
RETURN_FALSE ;
1317
1319
1318
1320
dom_object * intern = Z_DOMOBJ_P (this );
1319
1321
size_t old_modification_nr = 0 ;
1320
1322
if (intern != NULL ) {
1323
+ bool is_html5_class = intern -> document -> is_html5_class ;
1321
1324
xmlDocPtr docp = (xmlDocPtr ) dom_object_get_node (intern );
1322
1325
dom_doc_propsptr doc_prop = NULL ;
1323
1326
if (docp != NULL ) {
@@ -1337,6 +1340,7 @@ static void dom_finish_loading_document(zval *this, zval *return_value, xmlDocPt
1337
1340
RETURN_FALSE ;
1338
1341
}
1339
1342
intern -> document -> doc_props = doc_prop ;
1343
+ intern -> document -> is_html5_class = is_html5_class ;
1340
1344
}
1341
1345
1342
1346
php_libxml_increment_node_ptr ((php_libxml_node_object * )intern , (xmlNodePtr )newdoc , (void * )intern );
@@ -1350,8 +1354,7 @@ static void dom_finish_loading_document(zval *this, zval *return_value, xmlDocPt
1350
1354
RETURN_TRUE ;
1351
1355
}
1352
1356
1353
- /* {{{ static void dom_parse_document(INTERNAL_FUNCTION_PARAMETERS, int mode) */
1354
- static void dom_parse_document (INTERNAL_FUNCTION_PARAMETERS , int mode ) {
1357
+ void dom_parse_document (INTERNAL_FUNCTION_PARAMETERS , int mode , xmlDocPtr * doc_out ) {
1355
1358
char * source ;
1356
1359
size_t source_len ;
1357
1360
zend_long options = 0 ;
@@ -1374,17 +1377,18 @@ static void dom_parse_document(INTERNAL_FUNCTION_PARAMETERS, int mode) {
1374
1377
}
1375
1378
1376
1379
xmlDocPtr newdoc = dom_document_parser (ZEND_THIS , mode , source , source_len , options );
1380
+ * doc_out = newdoc ;
1377
1381
1378
- dom_finish_loading_document (ZEND_THIS , return_value , newdoc );
1382
+ php_dom_finish_loading_document (ZEND_THIS , return_value , newdoc );
1379
1383
}
1380
- /* }}} end dom_parser_document */
1381
1384
1382
1385
/* {{{ URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load
1383
1386
Since: DOM Level 3
1384
1387
*/
1385
1388
PHP_METHOD (DOMDocument , load )
1386
1389
{
1387
- dom_parse_document (INTERNAL_FUNCTION_PARAM_PASSTHRU , DOM_LOAD_FILE );
1390
+ xmlDocPtr unused ;
1391
+ dom_parse_document (INTERNAL_FUNCTION_PARAM_PASSTHRU , DOM_LOAD_FILE , & unused );
1388
1392
}
1389
1393
/* }}} end dom_document_load */
1390
1394
@@ -1393,7 +1397,8 @@ Since: DOM Level 3
1393
1397
*/
1394
1398
PHP_METHOD (DOMDocument , loadXML )
1395
1399
{
1396
- dom_parse_document (INTERNAL_FUNCTION_PARAM_PASSTHRU , DOM_LOAD_STRING );
1400
+ xmlDocPtr unused ;
1401
+ dom_parse_document (INTERNAL_FUNCTION_PARAM_PASSTHRU , DOM_LOAD_STRING , & unused );
1397
1402
}
1398
1403
/* }}} end dom_document_loadxml */
1399
1404
@@ -1915,7 +1920,7 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */
1915
1920
xmlDocPtr newdoc = ctxt -> myDoc ;
1916
1921
htmlFreeParserCtxt (ctxt );
1917
1922
1918
- dom_finish_loading_document (ZEND_THIS , return_value , newdoc );
1923
+ php_dom_finish_loading_document (ZEND_THIS , return_value , newdoc );
1919
1924
}
1920
1925
/* }}} */
1921
1926
0 commit comments