tony2001 Thu Nov 17 06:42:41 2005 EDT Modified files: (Branch: PHP_4_4) /php-src NEWS /php-src/main output.c Log: fix #35257 (Calling ob_flush after creating an ob callback causes segfault) *** The issue is 4.x specific and cannot be reproduced in 5.x, because in 5.x we allocate empty strings, while in 4.x we're using empty_string macro. *** http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1247.2.920.2.77&r2=1.1247.2.920.2.78&ty=u Index: php-src/NEWS diff -u php-src/NEWS:1.1247.2.920.2.77 php-src/NEWS:1.1247.2.920.2.78 --- php-src/NEWS:1.1247.2.920.2.77 Wed Nov 9 10:41:07 2005 +++ php-src/NEWS Thu Nov 17 06:42:35 2005 @@ -3,6 +3,8 @@ ?? ??? 2006, Version 4.4.2 - Backport missing imap_mailcompose fixes from 5.X. (Ilia) - Added missing safe_mode/open_basedir checks in cURL extension. (Ilia) +- Fixed bug #35257 (Calling ob_flush after creating an ob callback causes + segfault). (Tony) - Fixed bug #35078 (configure does not find ldap_start_tls_s). (Jani) - Fixed bug #35071 (Wrong fopen mode used in GD safe-mode checks). (Jani) - Fixed bug #35067, #35063 (key(),current() need to work by reference). (Ilia) http://cvs.php.net/diff.php/php-src/main/output.c?r1=1.142.2.16.2.1&r2=1.142.2.16.2.2&ty=u Index: php-src/main/output.c diff -u php-src/main/output.c:1.142.2.16.2.1 php-src/main/output.c:1.142.2.16.2.2 --- php-src/main/output.c:1.142.2.16.2.1 Wed Aug 24 12:20:12 2005 +++ php-src/main/output.c Thu Nov 17 06:42:40 2005 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: output.c,v 1.142.2.16.2.1 2005/08/24 16:20:12 iliaa Exp $ */ +/* $Id: output.c,v 1.142.2.16.2.2 2005/11/17 11:42:40 tony2001 Exp $ */ #include "php.h" #include "ext/standard/head.h" @@ -240,7 +240,7 @@ OG(ob_lock) = 1; if (call_user_function_ex(CG(function_table), NULL, OG(active_ob_buffer).output_handler, &alternate_buffer, 2, params, 1, NULL TSRMLS_CC)==SUCCESS) { - if (!(Z_TYPE_P(alternate_buffer)==IS_BOOL && Z_BVAL_P(alternate_buffer)==0)) { + if (alternate_buffer && !(Z_TYPE_P(alternate_buffer)==IS_BOOL && Z_BVAL_P(alternate_buffer)==0)) { convert_to_string_ex(&alternate_buffer); final_buffer = Z_STRVAL_P(alternate_buffer); final_buffer_length = Z_STRLEN_P(alternate_buffer); @@ -296,7 +296,7 @@ OG(ob_nesting_level)--; if (send_buffer) { - if (just_flush) { /* if flush is called prior to proper end, ensure presence of NUL */ + if (just_flush && strlen(final_buffer)) { /* if flush is called prior to proper end, ensure presence of NUL */ final_buffer[final_buffer_length] = '\0'; } OG(php_body_write)(final_buffer, final_buffer_length TSRMLS_CC);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php