iliaa           Fri Nov  3 13:34:19 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/standard       php_fopen_wrapper.c 
    /php-src    NEWS 
  Log:
  Fixed bug #39215 (Inappropriate close of stdin/stdout/stderr).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/php_fopen_wrapper.c?r1=1.45.2.4.2.2&r2=1.45.2.4.2.3&diff_format=u
Index: php-src/ext/standard/php_fopen_wrapper.c
diff -u php-src/ext/standard/php_fopen_wrapper.c:1.45.2.4.2.2 
php-src/ext/standard/php_fopen_wrapper.c:1.45.2.4.2.3
--- php-src/ext/standard/php_fopen_wrapper.c:1.45.2.4.2.2       Wed Jul  5 
17:38:14 2006
+++ php-src/ext/standard/php_fopen_wrapper.c    Fri Nov  3 13:34:18 2006
@@ -17,7 +17,7 @@
    |          Hartmut Holzgraefe <[EMAIL PROTECTED]>                       |
    +----------------------------------------------------------------------+
  */
-/* $Id: php_fopen_wrapper.c,v 1.45.2.4.2.2 2006/07/05 17:38:14 iliaa Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.45.2.4.2.3 2006/11/03 13:34:18 iliaa Exp $ */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -191,11 +191,41 @@
        }  
        
        if (!strcasecmp(path, "stdin")) {
-               fd = !strcmp(sapi_module.name, "cli") ? STDIN_FILENO : 
dup(STDIN_FILENO);
+               if (!strcmp(sapi_module.name, "cli")) {
+                       static int cli_in = 0;
+                       fd = STDIN_FILENO;
+                       if (cli_in) {
+                               fd = dup(fd);
+                       } else {
+                               cli_in = 1;
+                       }
+               } else {
+                       fd = dup(STDIN_FILENO);
+               }
        } else if (!strcasecmp(path, "stdout")) {
-               fd = !strcmp(sapi_module.name, "cli") ? STDOUT_FILENO : 
dup(STDOUT_FILENO);
+               if (!strcmp(sapi_module.name, "cli")) {
+                       static int cli_out = 0;
+                       fd = STDOUT_FILENO;
+                       if (cli_out++) {
+                               fd = dup(fd);
+                       } else {
+                               cli_out = 1;
+                       }
+               } else {
+                       fd = dup(STDOUT_FILENO);
+               }
        } else if (!strcasecmp(path, "stderr")) {
-               fd = !strcmp(sapi_module.name, "cli") ? STDERR_FILENO : 
dup(STDERR_FILENO);
+               if (!strcmp(sapi_module.name, "cli")) {
+                       static int cli_err = 0;
+                       fd = STDERR_FILENO;
+                       if (cli_err++) {
+                               fd = dup(fd);
+                       } else {
+                               cli_err = 1;
+                       }
+               } else {
+                       fd = dup(STDERR_FILENO);
+               }
        } else if (!strncasecmp(path, "filter/", 7)) {
                /* Save time/memory when chain isn't specified */
                if (strchr(mode, 'r') || strchr(mode, '+')) {
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.319&r2=1.2027.2.547.2.320&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.319 php-src/NEWS:1.2027.2.547.2.320
--- php-src/NEWS:1.2027.2.547.2.319     Fri Nov  3 13:19:07 2006
+++ php-src/NEWS        Fri Nov  3 13:34:19 2006
@@ -3,6 +3,7 @@
 ?? ??? 2007, PHP 5.2.1
 - Fixed bug #39265 (Fixed path handling inside mod_files.sh). 
   (michal dot taborsky at gmail dot com, Ilia)
+- Fixed bug #39215 (Inappropriate close of stdin/stdout/stderr). (Wez,Ilia)
 - Fixed bug #38680 (Added missing handling of basic types in json_decode).
   (Ilia) 
 

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

Reply via email to