Bug #10026 Updated: For loop always execute
| From: | jmoore@php.net | Date: | Sun, 17 Jun 2001 09:06:32 +0000 |
| Subject: | Bug #10026 Updated: For loop always execute | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-56979@lists.php.net to get a copy of this message | ||
ID: 10026
Updated by: jmoore
Reported By: svein@edbc.no
Old-Status: Open
Status: Closed
Bug Type: Scripting Engine problem
Operating system:
PHP Version: 4.0.4pl1
Assigned To:
Comments:
I have spent twenty mins trying to recreate this, before you start your for loop please check the
value of $c (echo it out etc) and make sure its what you expected. I very much doubt this is a bug,
if the value of $c is indeed 0 then please reopen this report.
- James
Previous Comments:
---------------------------------------------------------------------------
[2001-04-04 08:34:26] svein@edbc.no
I'm sorry, but all other script i make work ok. Its just this one that cause the problem.
I dont know how to make another script for you as i cant reproduce the error in any 5 line of code.
- Svein
---------------------------------------------------------------------------
[2001-04-04 08:28:35] sniper@php.net
I asked for 'self-containing' script. ie. one that doesn't
need anything outside but works as is. This example script
you added is useless and can not be used to reproduce anything. Please create a SHORT (max 5 lines)
script that doesn't work.
--Jani
---------------------------------------------------------------------------
[2001-04-04 06:26:22] svein@edbc.no
The parameter passed to the function i prev. post is the stricture returned from
imag_fetchstructure...
- Svein
---------------------------------------------------------------------------
[2001-04-04 06:24:05] svein@edbc.no
I post the function that cause the problem.
Its the for-loop int the wery bottom of the function that cause my problem. If you can see any wrong
logic in the code please let me know :)
I have solved this problem in another way in my current code.
The code below have worked for a long time, but stopped working and caused described problem after
installing - i think php4.0.4 or 4.0.4pl1
Even if i surrond the for-loop with this :
echo "<br>First : $c";
if ($c!=0) {
echo "<br>Second : $c";
for (..) {
echo "<br>Inside for-loop...";
...
}
}
the first echo output 0 but the second echo output another value like 1 or 2.
The strange thing is that if the FIRST echo output 0 the SECOND echo doesnt execute **BUT** the
for-loop execute!
// Parse the parts of message and get info on each
function parseparts($ref, $ofs='') {
global $part_no, $msg_part, $imap, $sorted_msgs, $msg_no, $bgcolor, $background, $folder;
global $sort_order;
$part_no++;
$msg_part[$part_no] = $ref;
$msg_part[$part_no]->index = $ofs;
$ac = count($ref->dparameters);
for ($i=0; $i<$ac; $i++)
if (eregi($ref->dparameters[$i]->attribute, 'filename')) {
$msg_part[$part_no]->filename = $ref->dparameters[$i]->value;
break;
};
$ac = count($ref->parameters);
for ($i=0; $i<$ac; $i++)
if (eregi($ref->parameters[$i]->attribute, 'name')) {
$msg_part[$part_no]->name = $ref->parameters[$i]->value;
break;
};
if (!strcmp($msg_part[$part_no]->subtype, 'HTML')) { // Get background for HTML
message
$tmp = @imap_fetchbody($imap, $sorted_msgs[$msg_no-1], $msg_part[$part_no]->index);
// Encode data
switch($msg_part[$part_no]->encoding) {
case ENCBASE64 : $tmp = @imap_base64($tmp); break;
case ENCQUOTEDPRINTABLE : $tmp = @imap_qprint($tmp); break;
};
// Background color
if (preg_match('/<BODY.*?BGCOLOR=([^s]+)>/si', $tmp, $tmp2)) {
$bgcolor=$tmp2[1];
$bgcolor = 'BGCOLOR="'.preg_replace('/"/', '',
$bgcolor).'"';
} else
$bgcolor='BGCOLOR="#ffffff"';;
// Remove any "
// Background image
if (preg_match('/<BODY.*?BACKGROUND=([^s]+)>/si', $tmp, $tmp2))
$tmp=$tmp2[1];
else
$tmp='';
if (!empty($tmp)) {
$background =
"background="getpart.phtml?1get_type=1&part_id=".rawurlencode(ereg_replace(""",
'', $tmp)).""";
} else $background = '';
};
$c = count($ref->parts);
for ($p=0; $p<$c; $p++) {
if (empty($ofs)) $of = ''.($p+1); else $of = $ofs.'.'.($p+1);
parseparts($ref->parts[$p], $of);
};
};
// Get info on each parts
parseparts($msg_struct);
---------------------------------------------------------------------------
[2001-04-01 13:34:29] sniper@php.net
As I can not reproduce this with latest CVS please try
the latest snapshot from http://snaps.php.net/
And if happens with it too, create one
short but self-containing script which can be used
to reproduce this anywhere without modifications
and add it into this bug report.
--Jani
---------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view the rest of the comments,
please view the bug report online.
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=10026&edit=2