diff --git a/rtl/linux/unxfunc.inc b/rtl/linux/unxfunc.inc index 06b8db38f1..2de789e607 100644 --- a/rtl/linux/unxfunc.inc +++ b/rtl/linux/unxfunc.inc @@ -35,11 +35,14 @@ Function PClose(Var F:text) :cint; var pl : ^cint; res : cint; + pid : cint; begin fpclose(Textrec(F).Handle); { closed our side, Now wait for the other - this appears to be needed ?? } pl:=@(textrec(f).userdata[2]); - fpwaitpid(pl^,@res,0); + { avoid alignment error on sparc } + move(pl^,pid,sizeof(pid)); + fpwaitpid(pid,@res,0); pclose:=res shr 8; end; @@ -47,11 +50,14 @@ Function PClose(Var F:file) : cint; var pl : ^cint; res : cint; + pid : cint; begin fpclose(filerec(F).Handle); { closed our side, Now wait for the other - this appears to be needed ?? } pl:=@(filerec(f).userdata[2]); - fpwaitpid(pl^,@res,0); + { avoid alignment error on sparc } + move(pl^,pid,sizeof(pid)); + fpwaitpid(pid,@res,0); pclose:=res shr 8; end;