diff --git a/rtl/os2/dos.pas b/rtl/os2/dos.pas index 0e156bf411..169510aff3 100644 --- a/rtl/os2/dos.pas +++ b/rtl/os2/dos.pas @@ -211,9 +211,7 @@ var Prio: byte; DSS: boolean; SR: SearchRec; - -const - MaxArgsSize = 3072; (* Amount of memory reserved for arguments in bytes. *) + MaxArgsSize: word; (* Amount of memory reserved for arguments in bytes. *) begin { LastDosExitCode := Exec (Path, ExecRunFlags (ExecFlags), efDefault, ComLine);} @@ -226,6 +224,7 @@ begin else QName := Path; FindClose (SR); + MaxArgsSize := Length (ComLine) + Length (QName) + 256; (* More than enough *) if ComLine = '' then begin Args0 := nil; diff --git a/rtl/os2/sysutils.pp b/rtl/os2/sysutils.pp index 9b4eaa1285..32df530718 100644 --- a/rtl/os2/sysutils.pp +++ b/rtl/os2/sysutils.pp @@ -750,9 +750,9 @@ var ObjName: shortstring; RC: cardinal; ExecAppType: cardinal; + MaxArgsSize: word; (* Amount of memory reserved for arguments in bytes. *) const - MaxArgsSize = 3072; (* Amount of memory reserved for arguments in bytes. *) ObjBufSize = 512; function StartSession: cardinal; @@ -845,6 +845,7 @@ begin if (ApplicationType and 3 = ExecAppType and 3) then (* DosExecPgm should work... *) begin + MaxArgsSize := Length (ComLine) + Length (Path) + 256; (* More than enough *) if ComLine = '' then begin Args0 := nil;