From: [EMAIL PROTECTED]
Operating system: Redhat Linux, SunOS, ...
PHP version: 4.0.6
PHP Bug Type: Output Control
Bug description: RE: Bug # 12180
Ergh, why isn't there a useful way to reply to bugs?
Anyway... regarding bug #12180, this bug occurs because the pseudo-function
smart_str_0 apparently isn't quite so smart :) In
ext/standard/url_scanner_ex.c, it's being called with the parameter
&ctx->result; ctx->result.c is unitialized (and ctx->result.len==0) IF the
following conditions exist:
- you are using output buffering
- you are using sessions
- you haven't outputted anything
- you don't call ob_end_clean()
This can be replicated with the script:
<? ob_start(); session_start() ?>
I made a quick patch to ext/standard/php_smart_str.h to solve this problem,
then realized that it had already been fixed in the latest CVS version
(200108031035). So, I made another patch which adds 2 lines of code to
ext/standard/url_scanner_ex.c based on that CVS snapshot:
====== cut ======
diff -ur php-4.0.6.orig/ext/standard/url_scanner_ex.c
php-4.0.6/ext/standard/url_scanner_ex.c
--- php-4.0.6.orig/ext/standard/url_scanner_ex.c Thu Jun 21 02:29:04 2001
+++ php-4.0.6/ext/standard/url_scanner_ex.c Fri Aug 3 14:29:20 2001
@@ -667,6 +667,8 @@
mainloop(ctx, src, srclen);
*newlen = ctx->result.len;
+ if (!ctx->result.c)
+ smart_str_appendl(&ctx->result, "", 0);
smart_str_0(&ctx->result);
ctx->result.len = 0;
return ctx->result.c;
====== cut ======
You can either patch up 4.0.6 with this, or just use the latest dev
snapshot. I chose to stick with the patched released version, since who
knows what bugs have since been introduced into the CVS tree... :)
-Tony Novak
Application Developer, Lightspeed Research LLC
[EMAIL PROTECTED]
--
Edit bug report at: http://bugs.php.net/?id=12561&edit=1
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]