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

Reply via email to