@@ -2148,6 +2148,7 @@ PHP_FUNCTION(dom_document_save_html)
2148
2148
zval * id , * nodep = NULL ;
2149
2149
xmlDoc * docp ;
2150
2150
xmlNode * node ;
2151
+ xmlOutputBufferPtr outBuf ;
2151
2152
xmlBufferPtr buf ;
2152
2153
dom_object * intern , * nodeobj ;
2153
2154
xmlChar * mem = NULL ;
@@ -2174,7 +2175,8 @@ PHP_FUNCTION(dom_document_save_html)
2174
2175
}
2175
2176
2176
2177
buf = xmlBufferCreate ();
2177
- if (!buf ) {
2178
+ outBuf = xmlOutputBufferCreateBuffer (buf , NULL );
2179
+ if (!outBuf || !buf ) {
2178
2180
php_error_docref (NULL , E_WARNING , "Could not fetch buffer" );
2179
2181
RETURN_FALSE ;
2180
2182
}
@@ -2183,20 +2185,21 @@ PHP_FUNCTION(dom_document_save_html)
2183
2185
int one_size ;
2184
2186
2185
2187
for (node = node -> children ; node ; node = node -> next ) {
2186
- one_size = htmlNodeDump ( buf , docp , node );
2187
-
2188
+ htmlNodeDumpFormatOutput ( outBuf , docp , node , NULL , format );
2189
+ one_size = ! outBuf -> error ? xmlOutputBufferGetSize ( outBuf ) : -1 ;
2188
2190
if (one_size >= 0 ) {
2189
- size + = one_size ;
2191
+ size = one_size ;
2190
2192
} else {
2191
2193
size = -1 ;
2192
2194
break ;
2193
2195
}
2194
2196
}
2195
2197
} else {
2196
- size = htmlNodeDump (buf , docp , node );
2198
+ htmlNodeDumpFormatOutput (outBuf , docp , node , NULL , format );
2199
+ size = !outBuf -> error ? xmlOutputBufferGetSize (outBuf ): -1 ;
2197
2200
}
2198
2201
if (size >= 0 ) {
2199
- mem = (xmlChar * ) xmlBufferContent ( buf );
2202
+ mem = (xmlChar * ) xmlOutputBufferGetContent ( outBuf );
2200
2203
if (!mem ) {
2201
2204
RETVAL_FALSE ;
2202
2205
} else {
@@ -2206,7 +2209,7 @@ PHP_FUNCTION(dom_document_save_html)
2206
2209
php_error_docref (NULL , E_WARNING , "Error dumping HTML node" );
2207
2210
RETVAL_FALSE ;
2208
2211
}
2209
- xmlBufferFree ( buf );
2212
+ xmlOutputBufferClose ( outBuf );
2210
2213
} else {
2211
2214
#if LIBXML_VERSION >= 20623
2212
2215
htmlDocDumpMemoryFormat (docp , & mem , & size , format );
0 commit comments