php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #43897 $ie not cleared on IE quit
Submitted: 2008-01-20 02:52 UTC Modified: -
From: csaba at alum dot mit dot edu Assigned:
Status: Open Package: COM related
PHP Version: 5.2.5 OS: Win XP Pro
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2008-01-20 02:52 UTC] csaba at alum dot mit dot edu
Description:
------------
In the code below, if the visible IE is closed, whether by script or by the user, the bug manifests itself.  What will happen is that there will be a sequence of (ReadyState) 4's displayed while IE is extant.  When IE is closed, "Exiting" should be printed, but what happens is that a sequence of ReadyState=0's is printed, which is a bug.

The bug only happens if there are no instances of IE when the script is run.

The second instance of $ie has to be 'static'

Csaba Gabor from Vienna

Reproduce code:
---------------
<?php
// IE being closed doesn't terminate script
// if there are no IE instances on startup
$ie = new COM("InternetExplorer.Application");
$ie->visible = true;
$ie->Navigate2 ("about:blank");

$ie2 = new COM("InternetExplorer.Application");

try { while ($ie->ReadyState>=0) {
  print $ie->ReadyState;
  com_message_pump(200); } }
catch (com_exception $e) {}
print "Exiting";
?>

Expected result:
----------------
I expect to see a sequence of 4s until I close IE, and then I expect to see Exiting printed

Actual result:
--------------
A sequence of 4s is printed, but when I close IE a sequence of 0s is printed which doesn't terminate till I use the windows task manager (ctrl+alt+delete) to kill the iexplore process.  (One could also use ctrl+C in the Cmd window, but that leaves a hidden IE instance, so the bug won't show itself next time around, until the IE is removed).

The bug manifests itself without user actions if
$ie->Quit();
is inserted right above the 'try' line

If there is already an instance of IE in existence, then the bug does not happen.

The bug will also show itself if the '$ie2' line is replaced with:
ieStatic();
function ieStatic() {
  static $ie;
  $ie = new COM("InternetExplorer.Application"); }

Patches

Add a Patch

Pull Requests

Add a Pull Request

 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Sat Apr 04 03:01:24 2020 UTC