diff --git a/rtl/human68k/system.pp b/rtl/human68k/system.pp index 11005aadc2..57620f295f 100644 --- a/rtl/human68k/system.pp +++ b/rtl/human68k/system.pp @@ -145,26 +145,24 @@ var argsp: pchar; inquotes: boolean; inarg: boolean; + i: longint; begin - argc:=0; inquotes:=false; inarg:=false; - p:=@h68k_startup.comm^.buffer; - if not assigned(p) then + if not assigned(h68k_startup.comm) then exit; + p:=@h68k_startup.comm^.buffer; argl:=h68k_startup.comm^.len; - if argl < 1 then - argl:=1; args:=getmem(argl+1); fillchar(args^,argl+1,#0); argsp:=args; - while p^ <> #0 do + for i:=0 to argl-1 do begin - case p^ of + case p[i] of ' ': begin if not inquotes then @@ -177,7 +175,7 @@ begin argsp^:=#0; end else - argsp^:=p^; + argsp^:=p[i]; inc(argsp); end; '"': @@ -187,11 +185,10 @@ begin else begin inarg:=true; - argsp^:=p^; + argsp^:=p[i]; inc(argsp); end; end; - inc(p); end; if inarg then inc(argc);