nlopess Fri Jan 19 18:50:26 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/tidy tidy.c Log: fix segfaults with new libtidy. the patch is backwards compatible http://cvs.php.net/viewvc.cgi/php-src/ext/tidy/tidy.c?r1=1.66.2.8.2.17&r2=1.66.2.8.2.18&diff_format=u Index: php-src/ext/tidy/tidy.c diff -u php-src/ext/tidy/tidy.c:1.66.2.8.2.17 php-src/ext/tidy/tidy.c:1.66.2.8.2.18 --- php-src/ext/tidy/tidy.c:1.66.2.8.2.17 Mon Jan 1 09:36:09 2007 +++ php-src/ext/tidy/tidy.c Fri Jan 19 18:50:26 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: tidy.c,v 1.66.2.8.2.17 2007/01/01 09:36:09 sebastian Exp $ */ +/* $Id: tidy.c,v 1.66.2.8.2.18 2007/01/19 18:50:26 nlopess Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -501,17 +501,18 @@ } if (data) { - TidyBuffer buf = {0}; - + TidyBuffer buf; + tidyBufInit(&buf); tidyBufAppend(&buf, data, data_len); - + if (tidyParseBuffer(doc, &buf) < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errbuf->bp); RETVAL_FALSE; } else { if (tidyCleanAndRepair(doc) >= 0) { - TidyBuffer output = {0}; + TidyBuffer output; + tidyBufInit(&output); tidySaveBuffer (doc, &output); RETVAL_STRINGL(output.bp, output.size-1, 1); @@ -662,7 +663,7 @@ static int tidy_doc_cast_handler(zval *in, zval *out, int type TSRMLS_DC) { - TidyBuffer output = {0}; + TidyBuffer output; PHPTidyObj *obj; switch(type) { @@ -680,6 +681,7 @@ case IS_STRING: obj = (PHPTidyObj *)zend_object_store_get_object(in TSRMLS_CC); + tidyBufInit(&output); tidySaveBuffer (obj->ptdoc->doc, &output); ZVAL_STRINGL(out, output.bp, output.size-1, TRUE); tidyBufFree(&output); @@ -694,7 +696,7 @@ static int tidy_node_cast_handler(zval *in, zval *out, int type TSRMLS_DC) { - TidyBuffer buf = {0}; + TidyBuffer buf; PHPTidyObj *obj; switch(type) { @@ -712,6 +714,7 @@ case IS_STRING: obj = (PHPTidyObj *)zend_object_store_get_object(in TSRMLS_CC); + tidyBufInit(&buf); tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); ZVAL_STRINGL(out, buf.bp, buf.size-1, TRUE); tidyBufFree(&buf); @@ -727,9 +730,10 @@ static void tidy_doc_update_properties(PHPTidyObj *obj TSRMLS_DC) { - TidyBuffer output = {0}; + TidyBuffer output; zval *temp; + tidyBufInit(&output); tidySaveBuffer (obj->ptdoc->doc, &output); if (output.size) { @@ -759,8 +763,7 @@ switch(type) { case is_node: - - memset(&buf, 0, sizeof(buf)); + tidyBufInit(&buf); tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); ADD_PROPERTY_STRINGL(obj->std.properties, value, buf.bp, buf.size-1); tidyBufFree(&buf); @@ -832,9 +835,6 @@ ADD_PROPERTY_NULL(obj->std.properties, errorBuffer); ADD_PROPERTY_NULL(obj->std.properties, value); break; - - default: - break; } } @@ -925,7 +925,7 @@ static int php_tidy_parse_string(PHPTidyObj *obj, char *string, int len, char *enc TSRMLS_DC) { - TidyBuffer buf = {0}; + TidyBuffer buf; if(enc) { if (tidySetCharEncoding(obj->ptdoc->doc, enc) < 0) { @@ -988,7 +988,7 @@ php_info_print_table_start(); php_info_print_table_header(2, "Tidy support", "enabled"); php_info_print_table_row(2, "libTidy Release", (char *)tidyReleaseDate()); - php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id: tidy.c,v 1.66.2.8.2.17 2007/01/01 09:36:09 sebastian Exp $)"); + php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id: tidy.c,v 1.66.2.8.2.18 2007/01/19 18:50:26 nlopess Exp $)"); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); @@ -999,7 +999,7 @@ char *input; int input_len; long mode; - TidyBuffer errbuf = {0}; + TidyBuffer errbuf; TidyDoc doc; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &input, &input_len, &mode) == FAILURE) { @@ -1022,7 +1022,7 @@ TIDY_SET_DEFAULT_CONFIG(doc); if (input_len > 1) { - TidyBuffer buf = {0}; + TidyBuffer buf; tidyBufInit(&buf); tidyBufAppend(&buf, input, input_len); @@ -1031,7 +1031,7 @@ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errbuf.bp); RETVAL_NULL(); } else { - TidyBuffer output = {0}; + TidyBuffer output; tidyBufInit(&output); tidySaveBuffer(doc, &output); @@ -1095,9 +1095,10 @@ Return a string representing the parsed tidy markup */ static PHP_FUNCTION(tidy_get_output) { - TidyBuffer output = {0}; + TidyBuffer output; TIDY_FETCH_OBJECT; + tidyBufInit(&output); tidySaveBuffer(obj->ptdoc->doc, &output); RETVAL_STRINGL(output.bp, output.size-1, 1);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php