Index: ext/mbstring/libmbfl/filters/mbfilter_htmlent.c =================================================================== RCS file: /repository/php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c,v retrieving revision 1.7 retrieving revision 1.7.4.1 diff -u -p -r1.7 -r1.7.4.1 --- ext/mbstring/libmbfl/filters/mbfilter_htmlent.c 21 Feb 2005 10:12:43 -0000 1.7 +++ ext/mbstring/libmbfl/filters/mbfilter_htmlent.c 16 Oct 2008 01:02:39 -0000 1.7.4.1 @@ -232,8 +232,7 @@ int mbfl_filt_conv_html_dec(int c, mbfl_ mbfl_filt_conv_html_dec_flush(filter); if (c=='&') { - filter->status = 1; - buffer[0] = '&'; + buffer[filter->status++] = '&'; } } } @@ -244,17 +243,19 @@ int mbfl_filt_conv_html_dec(int c, mbfl_ int mbfl_filt_conv_html_dec_flush(mbfl_convert_filter *filter) { int status, pos = 0; - char *buffer; + unsigned char *buffer; + int err = 0; - buffer = (char*)filter->opaque; + buffer = (unsigned char*)filter->opaque; status = filter->status; + filter->status = 0; /* flush fragments */ while (status--) { - CK((*filter->output_function)(buffer[pos++], filter->data)); + int e = (*filter->output_function)(buffer[pos++], filter->data); + if (e != 0) + err = e; } - filter->status = 0; - /*filter->buffer = 0; of cause NOT*/ - return 0; + return err; }