* merged fix for #10175 to win64

git-svn-id: trunk@11641 -
This commit is contained in:
florian 2008-08-23 13:24:31 +00:00
parent 93d86a60e4
commit 820a9ad8e8

View File

@ -132,16 +132,6 @@ function SysReAllocStringLen(var bstr:pointer;psz: pointer;
Parameter Handling Parameter Handling
*****************************************************************************} *****************************************************************************}
var
ModuleName : array[0..255] of char;
function GetCommandFile:pchar;
begin
GetModuleFileName(0,@ModuleName,255);
GetCommandFile:=@ModuleName;
end;
procedure setup_arguments; procedure setup_arguments;
var var
arglen, arglen,
@ -150,6 +140,7 @@ var
pc,arg : pchar; pc,arg : pchar;
quote : char; quote : char;
argvlen : longint; argvlen : longint;
buf: array[0..259] of char; // need MAX_PATH bytes, not 256!
procedure allocarg(idx,len:longint); procedure allocarg(idx,len:longint);
var var
@ -175,13 +166,10 @@ begin
count:=0; count:=0;
argv:=nil; argv:=nil;
argvlen:=0; argvlen:=0;
pc:=getcommandfile; ArgLen := GetModuleFileName(0, @buf[0], sizeof(buf));
Arglen:=0; buf[ArgLen] := #0; // be safe
repeat allocarg(0,arglen);
Inc(Arglen); move(buf,argv[0]^,arglen+1);
until (pc[Arglen]=#0);
allocarg(count,arglen);
move(pc^,argv[count]^,arglen+1);
{ Setup cmdline variable } { Setup cmdline variable }
cmdline:=GetCommandLine; cmdline:=GetCommandLine;
{ process arguments } { process arguments }
@ -325,11 +313,11 @@ begin
{$EndIf SYSTEM_DEBUG_STARTUP} {$EndIf SYSTEM_DEBUG_STARTUP}
inc(count); inc(count);
end; end;
{ get argc and create an nil entry } { get argc }
argc:=count; argc:=count;
allocarg(argc,0); { free unused memory, leaving a nil entry at the end }
{ free unused memory } sysreallocmem(argv,(count+1)*sizeof(pointer));
sysreallocmem(argv,(argc+1)*sizeof(pointer)); argv[count] := nil;
end; end;
@ -1149,7 +1137,7 @@ begin
{ some misc Win32 stuff } { some misc Win32 stuff }
hprevinst:=0; hprevinst:=0;
if not IsLibrary then if not IsLibrary then
SysInstance:=getmodulehandle(GetCommandFile); SysInstance:=getmodulehandle(nil);
MainInstance:=SysInstance; MainInstance:=SysInstance;
cmdshow:=startupinfo.wshowwindow; cmdshow:=startupinfo.wshowwindow;
{ Setup heap } { Setup heap }