Browse Source

Adjust passing of SysInstance so it works correctly for packages

rtl/win32/sysinit.inc:
  * SysInstance is neither external nor public, but just a mere variable
win32/system.pp:
  + new public variable FPCSysInstance that will hold the address of SysInstance passed through the entry information
  * EXE_Entry: setup FPCSysInstance
win/syswin.inc:
  * DLL_Entry: setup FPCSysInstance

git-svn-id: branches/svenbarth/packages@32580 -
svenbarth 9 years ago
parent
commit
0a44b10a85
3 changed files with 4 additions and 2 deletions
  1. 1 0
      rtl/win/syswin.inc
  2. 1 1
      rtl/win32/sysinit.inc
  3. 2 1
      rtl/win32/system.pp

+ 1 - 0
rtl/win/syswin.inc

@@ -379,6 +379,7 @@ function Dll_entry{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}(const info : TEntry
      EntryInformation:=info;
      FPCResStrInitTables:=info.ResStrInitTables;
      FPCResourceStringTables:=info.ResourceStringTables;
+     FPCSysInstance:=info.Platform.SysInstanceAddr^;
      WStrInitTablesTable:=info.WideInitTables;
 {$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
      IsLibrary:=true;

+ 1 - 1
rtl/win32/sysinit.inc

@@ -15,7 +15,7 @@
  **********************************************************************}
 
    var
-      SysInstance : Longint; public name '_FPC_SysInstance'; //external name '_FPC_SysInstance';
+      SysInstance : Longint;
       TlsKeyVar: DWord = $ffffffff; public name '_FPC_TlsKey';
 
       InitFinalTable : record end; external name 'INITFINAL';

+ 2 - 1
rtl/win32/system.pp

@@ -109,7 +109,7 @@ Const
 implementation
 
 var
-  //SysInstance : Longint;public name '_FPC_SysInstance';
+  FPCSysInstance : Longint;public name '_FPC_SysInstance';
   FPCResStrInitTables : Pointer;public name '_FPC_ResStrInitTables';
   FPCResourceStringTables : Pointer;public name '_FPC_ResourceStringTables';
 const
@@ -212,6 +212,7 @@ procedure Exe_entry(const info : TEntryInformation);[public,alias:'_FPC_EXE_Entr
      EntryInformation:=info;
      FPCResStrInitTables:=info.ResStrInitTables;
      FPCResourceStringTables:=info.ResourceStringTables;
+     FPCSysInstance:=info.Platform.SysInstanceAddr^;
      WStrInitTablesTable:=info.WideInitTables;
      IsLibrary:=false;
      { install the handlers for exe only ?