Closed NickRing closed 9 years ago
Definetly something to improve. I'll do that. Did it throw an AV? (if it does we've got a problem)
It did throw an AV while trying to install :-(
I finally got around to test Delphinus around midnight (just the best time to, right?) and it wasn't installing because of the AV and by commenting out code, it lead me to the above situation. I haven't had time to read and understand what it was trying to do, sorry :(
well, that code is quite critical. It gives me access to the seperated environment*options(library-path) for each platform (win32;win64;OSX32) seperately(the OTA-API is broken and does not work for this anymore). If this code completely fails, i cant configure the environment when you install a package. For delphi XE7, it should try the above code 3 times (Win32, Win64, OSX32). Does each of these fail? or just a specific one?
and i hope GetEnvironmentOptionObject() returns something?
Give me a couple of days and I will try to debug it (full-on weekend :( )
thank you, that's great :)
Found the issue...
Delphinus assumes that is the registry key exists (in TDNEnvironmentOptionsService.LoadPlatforms
), that the platform is available. This is not the case for me, as I didn't install the OSX32 platform, as I don't have any OSX32 devices. Because I haven't installed the OSX32 platform, Delphinus is unable to retrieve the OSX32 library path (in GetRegistryOptionsObject
).
So there is two problems I see:
Created a pull request to overcome this issue.
merged it. Thanks for providing the fix :)
In
TDNRegistryEnvironmentOptions.Create
there are two external calls:If
GetRegistryOptionsObject
returnsnil
, it is passed in toGetRegistryOptionsMemIni
. However there is no check within the method to see if the object passed in is nil, so it will access violate when the following line is executed:Where
ARegOption
is the passed in object. The following line should be added afterResult := nil;
Using XE7.1