Infinite loop with "private nsIXulfxDOMWindowHelper Helper"

Issue #52 new
pierre.astruc@evertest.com created an issue

Hello,

For information, we had to roll back your nsIXulfxDOMWindowHelper function to prevent infinite loop if we called window.document in DocumentComplete event for some sub-url like "about:blank" in ajax call.

Here is our code:

private nsIXulfxDOMWindowHelper Helper
{
get
       {
             nsIXulfxDOMWindowHelper helper = null;
             if (_helper == null) // while (_helper == null)
             {

                    // It will be thrown ObjectDisposedException, if the window is destroyed.
                    nsIDOMWindow window = this.QueryInterface<nsIDOMWindow>();
                    try
                    {
                           helper = Xpcom.CreateInstance<nsIXulfxDOMWindowHelper>(Contracts.XulfxDOMWindow);
                           helper.Init(window);  // Here is the infinite loop problem //
                           _helper = helper;
                     }
/*
                    catch (COMException e)
                    {
                           Xpcom.FreeComObject(ref helper);
                           if (e.ErrorCode != GeckoError.NS_ERROR_FAILURE)
                                  throw;
                     }
*/
                    finally
                    {
                           Xpcom.FreeComObject(ref window);
                     }
              }
             return _helper;
}
}

note: we had also to remove the catch to be able to have _helper object not null, and we don't know why :)

Comments (2)

  1. Log in to comment