#23396 [Opn->Fbk]: Fix for debug mode assertion failure in the Win2000 native libraries of fdopen
| From: | wez@php.net | Date: | Tue, 29 Apr 2003 09:42:55 +0000 |
| Subject: | #23396 [Opn->Fbk]: Fix for debug mode assertion failure in the Win2000 native libraries of fdopen | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-38696@lists.php.net to get a copy of this message | ||
ID: 23396
Updated by: wez@php.net
Reported By: ed000001 at hotmail dot com
-Status: Open
+Status: Feedback
Bug Type: Reproducible crash
Operating System: Win2000 - Debug Mode
PHP Version: 4.3.1
New Comment:
Can you give a little more detail on what error is caused and how it is
triggered?
It works fine here in my dev env under winxp.
Have you tried the source of the latest stable snapshot, or the latest
RC?
http://qa.php.net/
http://snaps.php.net/
Previous Comments:
------------------------------------------------------------------------
[2003-04-28 23:29:46] ed000001 at hotmail dot com
There is an extra "(" in the "(dup((a))" which should be (dup(a))
------------------------------------------------------------------------
[2003-04-28 23:28:40] ed000001 at hotmail dot com
comment
------------------------------------------------------------------------
[2003-04-28 23:24:57] ed000001 at hotmail dot com
Problem:
Initialization phase (before script) debug mode assertion failure in
the Win32 native libraries where "fdopen.c" is implemented when
compiling "php4ts_cli" in "Win32 Debug_TS".
Development Environment "Fix":
Do not call dup() for the Win32 platform -- I have not check the
implications as this is not my prod environment.
File php_fopen_wrapper.c:
=========================
#ifdef PHP_WIN32
#define FIX_DUP(a) (a)
#else
#define FIX_DUP(a) (dup((a))
#endif
php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char
*path, char *mode, int options, char **opened_path, php_stream_context
*context STREAMS_DC TSRMLS_DC)
{
FILE * fp = NULL;
php_stream * stream = NULL;
if (!strncasecmp(path, "php://", 6))
path += 6;
if (!strcasecmp(path, "output")) {
return php_stream_alloc(&php_stream_output_ops, NULL, 0,
"wb");
}
if (!strcasecmp(path, "input")) {
return php_stream_alloc(&php_stream_input_ops, NULL, 0, "rb");
}
if (!strcasecmp(path, "stdin")) {
fp = fdopen(FIX_DUP(STDIN_FILENO), mode);
} else if (!strcasecmp(path, "stdout")) {
fp = fdopen(FIX_DUP(STDOUT_FILENO), mode);
} else if (!strcasecmp(path, "stderr")) {
fp = fdopen(FIX_DUP(STDERR_FILENO), mode);
}
if (fp) {
stream = php_stream_fopen_from_file(fp, mode);
if (stream == NULL)
fclose(fp);
}
return stream;
}
Thanks for the great tool!
Ed
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=23396&edit=1