[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/main/output.c branches/PHP_5_4/main/php_output.h trunk/main/output.c trunk/main/php_output.h
mike Wed, 25 Jan 2012 17:22:46 + Revision: http://svn.php.net/viewvc?view=revisionrevision=322743 Log: fix crash with display_startup_errors=1 Changed paths: U php/php-src/branches/PHP_5_4/main/output.c U php/php-src/branches/PHP_5_4/main/php_output.h U php/php-src/trunk/main/output.c U php/php-src/trunk/main/php_output.h Modified: php/php-src/branches/PHP_5_4/main/output.c === --- php/php-src/branches/PHP_5_4/main/output.c 2012-01-25 15:59:08 UTC (rev 322742) +++ php/php-src/branches/PHP_5_4/main/output.c 2012-01-25 17:22:46 UTC (rev 322743) @@ -85,6 +85,18 @@ } /* }}} */ +/* {{{ stderr writer if not PHP_OUTPUT_ACTIVATED */ +static int php_output_stderr(const char *str, size_t str_len) +{ + fwrite(str, 1, str_len, stderr); +/* See http://support.microsoft.com/kb/190351 */ +#ifdef PHP_WIN32 + fflush(stderr); +#endif + return str_len; +} +/* }}} */ + /* {{{ void php_output_startup(void) * Set up module globals and initalize the conflict and reverse conflict hash tables */ PHPAPI void php_output_startup(void) @@ -117,6 +129,7 @@ #endif zend_stack_init(OG(handlers)); + OG(flags) |= PHP_OUTPUT_ACTIVATED; return SUCCESS; } @@ -139,6 +152,8 @@ } zend_stack_destroy(OG(handlers)); } + + OG(flags) ^= PHP_OUTPUT_ACTIVATED; } /* }}} */ @@ -174,9 +189,11 @@ * Get output control status */ PHPAPI int php_output_get_status(TSRMLS_D) { - return OG(flags) - | (OG(active) ? PHP_OUTPUT_ACTIVE : 0) - | (OG(running)? PHP_OUTPUT_LOCKED : 0); + return ( + OG(flags) + | (OG(active) ? PHP_OUTPUT_ACTIVE : 0) + | (OG(running)? PHP_OUTPUT_LOCKED : 0) + ) 0xff; } /* }}} */ @@ -187,7 +204,10 @@ if (OG(flags) PHP_OUTPUT_DISABLED) { return 0; } - return sapi_module.ub_write(str, len TSRMLS_CC); + if (OG(flags) PHP_OUTPUT_ACTIVATED) { + return sapi_module.ub_write(str, len TSRMLS_CC); + } + return php_output_stderr(str, len); } /* }}} */ @@ -198,8 +218,11 @@ if (OG(flags) PHP_OUTPUT_DISABLED) { return 0; } - php_output_op(PHP_OUTPUT_HANDLER_WRITE, str, len TSRMLS_CC); - return (int) len; + if (OG(flags) PHP_OUTPUT_ACTIVATED) { + php_output_op(PHP_OUTPUT_HANDLER_WRITE, str, len TSRMLS_CC); + return (int) len; + } + return php_output_stderr(str, len); } /* }}} */ Modified: php/php-src/branches/PHP_5_4/main/php_output.h === --- php/php-src/branches/PHP_5_4/main/php_output.h 2012-01-25 15:59:08 UTC (rev 322742) +++ php/php-src/branches/PHP_5_4/main/php_output.h 2012-01-25 17:22:46 UTC (rev 322743) @@ -67,6 +67,8 @@ /* supplementary flags for php_output_get_status() */ #define PHP_OUTPUT_ACTIVE 0x10 #define PHP_OUTPUT_LOCKED 0x20 +/* output layer is ready to use */ +#define PHP_OUTPUT_ACTIVATED 0x10 /* handler hooks */ typedef enum _php_output_handler_hook_t { Modified: php/php-src/trunk/main/output.c === --- php/php-src/trunk/main/output.c 2012-01-25 15:59:08 UTC (rev 322742) +++ php/php-src/trunk/main/output.c 2012-01-25 17:22:46 UTC (rev 322743) @@ -85,6 +85,18 @@ } /* }}} */ +/* {{{ stderr writer if not PHP_OUTPUT_ACTIVATED */ +static int php_output_stderr(const char *str, size_t str_len) +{ + fwrite(str, 1, str_len, stderr); +/* See http://support.microsoft.com/kb/190351 */ +#ifdef PHP_WIN32 + fflush(stderr); +#endif + return str_len; +} +/* }}} */ + /* {{{ void php_output_startup(void) * Set up module globals and initalize the conflict and reverse conflict hash tables */ PHPAPI void php_output_startup(void) @@ -117,6 +129,7 @@ #endif zend_stack_init(OG(handlers)); + OG(flags) |= PHP_OUTPUT_ACTIVATED; return SUCCESS; } @@ -139,6 +152,8 @@ } zend_stack_destroy(OG(handlers)); } + + OG(flags) ^= PHP_OUTPUT_ACTIVATED; } /* }}} */ @@ -174,9 +189,11 @@ * Get output control status */ PHPAPI int php_output_get_status(TSRMLS_D) { - return OG(flags) - | (OG(active) ? PHP_OUTPUT_ACTIVE : 0) - | (OG(running)? PHP_OUTPUT_LOCKED : 0); + return ( + OG(flags) + | (OG(active) ? PHP_OUTPUT_ACTIVE : 0) + | (OG(running)? PHP_OUTPUT_LOCKED : 0) + ) 0xff; } /* }}} */ @@ -187,7 +204,10 @@ if (OG(flags) PHP_OUTPUT_DISABLED) { return 0; } - return
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/main/output.c branches/PHP_5_4/main/php_output.h trunk/main/output.c trunk/main/php_output.h
dmitry Fri, 30 Dec 2011 08:50:49 + Revision: http://svn.php.net/viewvc?view=revisionrevision=321550 Log: Added an API call to return active output handler Changed paths: U php/php-src/branches/PHP_5_4/main/output.c U php/php-src/branches/PHP_5_4/main/php_output.h U php/php-src/trunk/main/output.c U php/php-src/trunk/main/php_output.h Modified: php/php-src/branches/PHP_5_4/main/output.c === --- php/php-src/branches/PHP_5_4/main/output.c 2011-12-30 07:52:04 UTC (rev 321549) +++ php/php-src/branches/PHP_5_4/main/output.c 2011-12-30 08:50:49 UTC (rev 321550) @@ -1502,6 +1502,14 @@ } /* }}} */ +/* {{{ php_output_handler* php_get_active_output_handler(TSRMLS_D) + * Get active output handler */ +PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D) +{ + return OG(active); +} +/* }}} */ + /* * Local variables: * tab-width: 4 Modified: php/php-src/branches/PHP_5_4/main/php_output.h === --- php/php-src/branches/PHP_5_4/main/php_output.h 2011-12-30 07:52:04 UTC (rev 321549) +++ php/php-src/branches/PHP_5_4/main/php_output.h 2011-12-30 08:50:49 UTC (rev 321550) @@ -242,6 +242,7 @@ PHPAPI php_output_handler_alias_ctor_t *php_output_handler_alias(const char *handler_name, size_t handler_name_len TSRMLS_DC); PHPAPI int php_output_handler_alias_register(const char *handler_name, size_t handler_name_len, php_output_handler_alias_ctor_t func TSRMLS_DC); +PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D); END_EXTERN_C() Modified: php/php-src/trunk/main/output.c === --- php/php-src/trunk/main/output.c 2011-12-30 07:52:04 UTC (rev 321549) +++ php/php-src/trunk/main/output.c 2011-12-30 08:50:49 UTC (rev 321550) @@ -1502,6 +1502,14 @@ } /* }}} */ +/* {{{ php_output_handler* php_get_active_output_handler(TSRMLS_D) + * Get active output handler */ +PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D) +{ + return OG(active); +} +/* }}} */ + /* * Local variables: * tab-width: 4 Modified: php/php-src/trunk/main/php_output.h === --- php/php-src/trunk/main/php_output.h 2011-12-30 07:52:04 UTC (rev 321549) +++ php/php-src/trunk/main/php_output.h 2011-12-30 08:50:49 UTC (rev 321550) @@ -242,6 +242,7 @@ PHPAPI php_output_handler_alias_ctor_t *php_output_handler_alias(const char *handler_name, size_t handler_name_len TSRMLS_DC); PHPAPI int php_output_handler_alias_register(const char *handler_name, size_t handler_name_len, php_output_handler_alias_ctor_t func TSRMLS_DC); +PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D); END_EXTERN_C() -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/main/output.c branches/PHP_5_4/main/php_output.h trunk/main/output.c trunk/main/php_output.h
mike Fri, 30 Dec 2011 09:20:07 + Revision: http://svn.php.net/viewvc?view=revisionrevision=321551 Log: follow naming convention Changed paths: U php/php-src/branches/PHP_5_4/main/output.c U php/php-src/branches/PHP_5_4/main/php_output.h U php/php-src/trunk/main/output.c U php/php-src/trunk/main/php_output.h Modified: php/php-src/branches/PHP_5_4/main/output.c === --- php/php-src/branches/PHP_5_4/main/output.c 2011-12-30 08:50:49 UTC (rev 321550) +++ php/php-src/branches/PHP_5_4/main/output.c 2011-12-30 09:20:07 UTC (rev 321551) @@ -338,6 +338,14 @@ } /* }}} */ +/* {{{ php_output_handler* php_output_get_active_handler(TSRMLS_D) + * Get active output handler */ +PHPAPI php_output_handler* php_output_get_active_handler(TSRMLS_D) +{ + return OG(active); +} +/* }}} */ + /* {{{ SUCCESS|FAILURE php_output_handler_start_default(TSRMLS_D) * Start a default output handler */ PHPAPI int php_output_start_default(TSRMLS_D) @@ -1502,14 +1510,6 @@ } /* }}} */ -/* {{{ php_output_handler* php_get_active_output_handler(TSRMLS_D) - * Get active output handler */ -PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D) -{ - return OG(active); -} -/* }}} */ - /* * Local variables: * tab-width: 4 Modified: php/php-src/branches/PHP_5_4/main/php_output.h === --- php/php-src/branches/PHP_5_4/main/php_output.h 2011-12-30 08:50:49 UTC (rev 321550) +++ php/php-src/branches/PHP_5_4/main/php_output.h 2011-12-30 09:20:07 UTC (rev 321551) @@ -219,6 +219,7 @@ PHPAPI int php_output_get_contents(zval *p TSRMLS_DC); PHPAPI int php_output_get_length(zval *p TSRMLS_DC); PHPAPI int php_output_get_level(TSRMLS_D); +PHPAPI php_output_handler* php_output_get_active_handler(TSRMLS_D); PHPAPI int php_output_start_default(TSRMLS_D); PHPAPI int php_output_start_devnull(TSRMLS_D); @@ -242,7 +243,6 @@ PHPAPI php_output_handler_alias_ctor_t *php_output_handler_alias(const char *handler_name, size_t handler_name_len TSRMLS_DC); PHPAPI int php_output_handler_alias_register(const char *handler_name, size_t handler_name_len, php_output_handler_alias_ctor_t func TSRMLS_DC); -PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D); END_EXTERN_C() Modified: php/php-src/trunk/main/output.c === --- php/php-src/trunk/main/output.c 2011-12-30 08:50:49 UTC (rev 321550) +++ php/php-src/trunk/main/output.c 2011-12-30 09:20:07 UTC (rev 321551) @@ -338,6 +338,14 @@ } /* }}} */ +/* {{{ php_output_handler* php_output_get_active_handler(TSRMLS_D) + * Get active output handler */ +PHPAPI php_output_handler* php_output_get_active_handler(TSRMLS_D) +{ + return OG(active); +} +/* }}} */ + /* {{{ SUCCESS|FAILURE php_output_handler_start_default(TSRMLS_D) * Start a default output handler */ PHPAPI int php_output_start_default(TSRMLS_D) @@ -1502,14 +1510,6 @@ } /* }}} */ -/* {{{ php_output_handler* php_get_active_output_handler(TSRMLS_D) - * Get active output handler */ -PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D) -{ - return OG(active); -} -/* }}} */ - /* * Local variables: * tab-width: 4 Modified: php/php-src/trunk/main/php_output.h === --- php/php-src/trunk/main/php_output.h 2011-12-30 08:50:49 UTC (rev 321550) +++ php/php-src/trunk/main/php_output.h 2011-12-30 09:20:07 UTC (rev 321551) @@ -219,6 +219,7 @@ PHPAPI int php_output_get_contents(zval *p TSRMLS_DC); PHPAPI int php_output_get_length(zval *p TSRMLS_DC); PHPAPI int php_output_get_level(TSRMLS_D); +PHPAPI php_output_handler* php_output_get_active_handler(TSRMLS_D); PHPAPI int php_output_start_default(TSRMLS_D); PHPAPI int php_output_start_devnull(TSRMLS_D); @@ -242,7 +243,6 @@ PHPAPI php_output_handler_alias_ctor_t *php_output_handler_alias(const char *handler_name, size_t handler_name_len TSRMLS_DC); PHPAPI int php_output_handler_alias_register(const char *handler_name, size_t handler_name_len, php_output_handler_alias_ctor_t func TSRMLS_DC); -PHPAPI php_output_handler* php_get_active_output_handler(TSRMLS_D); END_EXTERN_C() -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php