Closed Bug 304906 Opened 19 years ago Closed 12 years ago

NS_InitXPCOM2 (and friends) should arrange that the specified xpcom directory is in the path

Categories

(Core :: XPCOM, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: timeless, Unassigned)

Details

we have a module which runs from bin\, it is loaded by an app ..\foo\bar.exe

our module calls xpcom_core.dll!NS_InitXPCOM2_P and specifies the bin directory
as where xpcom is. XPCOM proceeds to initialize.... at first xpc3250.dll fails
to init because js3250.dll can't be found. we claim and dougt accepts that when
we told xpcom to init with the bin\ directory as its starting point that it
should use that as part of its path. The only real symptom is a dialog
complaining js3250.dll because eventually xpc3250 and js3250 actually load.

from NS_InitXPCOM2_P:
+       
{,,xpcom_core.dll}((*(nsACString*)(&(*(nsCSubstring*)(&(*(nsLocalFile*){*}binDirectory).mWorkingPath))))).mData
       0x02d63400 "C:\Program Files\Vendor\Vendor Product\Engine\BackEnd"      
 char *

from nsNativeComponentLoader::GetFactory:

+       
{,,xpcom_core.dll}((*(nsACString*)(&(*(nsCSubstring*)(&(*(nsLocalFile*){*}(((*(nsCOMPtr_base*)(&(*dll).m_dllSpec))).mRawPtr)).mWorkingPath))))).mData
       0x02d98dc0 "C:\Program Files\Vendor\Vendor
Product\Engine\BackEnd\components\xpc3250.dll"        char *

        if (!dll->Load()) {
fell into the ! case (Load returned 0)
because of js3250.dll
         xpcom_core.dll!nsNativeComponentLoader::GetFactory(const nsID &
aCID={...}, const char * aLocation=0x02da98d0, const char * aType=0x02d724d0,
nsIFactory * * _retval=0x0012e89c)  Line 128        C++
         xpcom_core.dll!nsFactoryEntry::GetFactory(nsIFactory * *
aFactory=0x0012e89c, nsComponentManagerImpl * mgr=0x00000000)  Line 287 + 0x1d 
      C++
         xpcom_core.dll!nsComponentManagerImpl::CreateInstanceByContractID(const
char * aContractID=0x02d99390, nsISupports * aDelegate=0x00000000, const nsID &
aIID={...}, void * * aResult=0x00000000)  Line 1958        C++
         xpcom_core.dll!nsComponentManagerImpl::GetServiceByContractID(const
char * aContractID=0x02d99390, const nsID & aIID={...}, void * *
result=0x0012e928)  Line 2385        C++
         xpcom_core.dll!nsGetServiceFromCategory::operator()(const nsID &
aIID={...}, void * * aInstancePtr=0x0012e928)  Line 245 + 0x1c        C++
         xpcom_core.dll!nsCOMPtr_base::assign_from_helper(const nsCOMPtr_helper
& helper={...}, const nsID & iid={...})  Line 114 + 0x10        C++
         xpcom_core.dll!nsComponentManagerImpl::GetLoaderForType(int aType=0,
nsIComponentLoader * * aLoader=0x0012e974)  Line 2868        C++
         xpcom_core.dll!nsFactoryEntry::GetFactory(nsIFactory * *
aFactory=0x0012e9a4, nsComponentManagerImpl * mgr=0x02d6aee8)  Line 284        C++
         xpcom_core.dll!nsComponentManagerImpl::CreateInstanceByContractID(const
char * aContractID=0x02d99350, nsISupports * aDelegate=0x00000000, const nsID &
aIID={...}, void * * aResult=0x00000000)  Line 1958        C++
         xpcom_core.dll!nsComponentManagerImpl::GetServiceByContractID(const
char * aContractID=0x02d99350, const nsID & aIID={...}, void * *
result=0x0012ea08)  Line 2385        C++
         xpcom_core.dll!nsGetServiceByContractID::operator()(const nsID &
aIID={...}, void * * aInstancePtr=0x0012ea08)  Line 183 + 0xf        C++
         xpcom_core.dll!nsCOMPtr_base::assign_from_helper(const nsCOMPtr_helper
& helper={...}, const nsID & iid={...})  Line 114 + 0x10        C++
         xpcom_core.dll!NS_CreateServicesFromCategory(const char *
category=0x02d6af30, nsISupports * origin=0x02d6aee8, const char *
observerTopic=0x0012e90c)  Line 786        C++
>        xpcom_core.dll!NS_InitXPCOM2_P(nsIServiceManager * * result=0x02d6326c,
nsIFile * binDirectory=0x02d63398, nsIDirectoryServiceProvider *
appFileLocationProvider=0x00000000)  Line 674 + 0xd        C++
         ourLibrary.dll!ourClass::InitXPCOM()  Line 208 + 0x13        C++
mass reassigning to nobody.
Assignee: dougt → nobody
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.