Comment 12 for bug 359407

Revision history for this message
In , Bugzilla-mozilla-tjworld (bugzilla-mozilla-tjworld) wrote :

A little more exploration. In nsComponentManagerImpl::CreateInstanceByContractID() I found that entry->GetFactory() is returning NS_ERROR_INVALID_POINTER.

What seems strange is that the following

if (NS_SUCCEEDED(rv))

seems to be returning TRUE since the code inside the block gets executed.

1664 nsFactoryEntry *entry = GetFactoryEntry(aContractID, strlen(aContractID));
(gdb) n
1666 if (!entry)
(gdb) n
1681 nsIFactory *factory = nsnull;
(gdb) n
1682 nsresult rv = entry->GetFactory(&factory);
(gdb) n
1684 if (NS_SUCCEEDED(rv))
(gdb) display entry
2: entry = <value optimized out>
(gdb) display factory
3: factory = (class nsIFactory *) 0x7f345b2982e0
(gdb) print /x rv
$2 = 0x80004003

#define NS_ERROR_INVALID_POINTER ((nsresult) 0x80004003L)