ID: 10026
User Update by: [EMAIL PROTECTED]
Old-Status: Closed
Status: Open
Bug Type: Scripting Engine problem
Operating system: RH Linux 6.1
PHP Version: 4.0.4pl1
Description: For loop always execute

I have solved the problem in another way. BUT; The value of $c *IS* 0 when entering 
for loop and the stange behavior of the for-loop explained above happens. I think it 
maybe is other part of the code BEFORE this function who make som "crash" in the 
system so this happen. I've never seen this before neither after so i dont know what 
more to say :)
But for sure it was a strange behavior of PHP in this code. We are two persons coding 
this system and we both spent a lot of time trying to find out what happens (with echo 
and other debug code) but we could'nt find out.
We had to drop the for-loop because it didnt work as it should.

Previous Comments:
---------------------------------------------------------------------------

[2001-06-17 05:06:32] [EMAIL PROTECTED]
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

---------------------------------------------------------------------------

[2001-04-04 08:34:26] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
The parameter passed to the function i prev. post is the stricture returned from 
imag_fetchstructure...

- Svein

---------------------------------------------------------------------------

[2001-04-04 06:24:05] [EMAIL PROTECTED]
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);


---------------------------------------------------------------------------

The remainder of the comments for this report are too long.  To view the rest of the 
comments, please view the bug report online.

Full Bug description available at: http://bugs.php.net/?id=10026


-- 
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]

Reply via email to