yohgaki         Mon Sep 30 19:46:43 2002 EDT

  Modified files:              
    /php4/main  output.c 
  Log:
  Users can shoot themselves by their own output handler always.
  Therefore, this check is overkill and it should be documented 
  limitation, IMO.
  
  Anyway, a little optimization.
  
  
Index: php4/main/output.c
diff -u php4/main/output.c:1.122 php4/main/output.c:1.123
--- php4/main/output.c:1.122    Mon Sep 30 06:18:06 2002
+++ php4/main/output.c  Mon Sep 30 19:46:43 2002
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: output.c,v 1.122 2002/09/30 10:18:06 wez Exp $ */
+/* $Id: output.c,v 1.123 2002/09/30 23:46:43 yohgaki Exp $ */
 
 #include "php.h"
 #include "ext/standard/head.h"
@@ -388,23 +388,26 @@
 {
        int   handler_gz, handler_mb, handler_ic;
 
-       /* check for specific handlers where rules apply */
-       handler_gz = strcmp(handler_name, "ob_gzhandler");
-       handler_mb = strcmp(handler_name, "mb_output_handler");
-       handler_ic = strcmp(handler_name, "ob_iconv_handler");
-       /* apply rules */
-       if (!handler_gz || !handler_mb || !handler_ic) {
-               if (php_ob_handler_used(handler_name TSRMLS_CC)) {
-                       php_error_docref("ref.outcontrol" TSRMLS_CC, E_WARNING, 
"output handler '%s' cannot be used twice", handler_name);
-                       return FAILURE;
+       if (OG(ob_nesting_level>1)) {
+               /* check for specific handlers where rules apply */
+               handler_gz = strcmp(handler_name, "ob_gzhandler");
+               handler_mb = strcmp(handler_name, "mb_output_handler");
+               handler_ic = strcmp(handler_name, "ob_iconv_handler");
+               /* apply rules */
+               if (!handler_gz || !handler_mb || !handler_ic) {
+                       if (php_ob_handler_used(handler_name TSRMLS_CC)) {
+                               php_error_docref("ref.outcontrol" TSRMLS_CC, 
+E_WARNING, "output handler '%s' cannot be used twice", handler_name);
+                               return FAILURE;
+                       }
+                       if (!handler_gz && php_ob_init_conflict(handler_name, "zlib 
+output compression" TSRMLS_CC))
+                               return FAILURE;
+                       if (!handler_mb && php_ob_init_conflict(handler_name, 
+"ob_iconv_handler" TSRMLS_CC))
+                               return FAILURE;
+                       if (!handler_ic && php_ob_init_conflict(handler_name, 
+"mb_output_handler" TSRMLS_CC))
+                               return FAILURE;
                }
-               if (!handler_gz && php_ob_init_conflict(handler_name, "zlib output 
compression" TSRMLS_CC))
-                       return FAILURE;
-               if (!handler_mb && php_ob_init_conflict(handler_name, 
"ob_iconv_handler" TSRMLS_CC))
-                       return FAILURE;
-               if (!handler_ic && php_ob_init_conflict(handler_name, 
"mb_output_handler" TSRMLS_CC))
-                       return FAILURE;
        }
+       
        if (OG(ob_nesting_level)>0) {
                if (OG(ob_nesting_level)==1) { /* initialize stack */
                        zend_stack_init(&OG(ob_buffers));



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to