From 7d26efc89a5cdae38202cf2f8c4496fa2ab119a4 Mon Sep 17 00:00:00 2001 From: red-prig Date: Wed, 8 Jun 2022 18:52:25 +0300 Subject: [PATCH] + --- chip/ps4_videodrv.pas | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/chip/ps4_videodrv.pas b/chip/ps4_videodrv.pas index c7375f10..1a790bcc 100644 --- a/chip/ps4_videodrv.pas +++ b/chip/ps4_videodrv.pas @@ -491,6 +491,8 @@ var ccbAddr:Pointer; dcbSize:DWORD; ccbSize:DWORD; + addr:Pointer; + size:DWORD; begin Result:=0; if (Submit=nil) then Exit(SCE_KERNEL_ERROR_EINVAL); @@ -505,27 +507,28 @@ begin Exit(SCE_KERNEL_ERROR_EINVAL); end; + size:=AlignUp(SizeOf(TvSubmitNode),4)+dcbSize+ccbSize; + node:=AllocMem(size); + if (node=nil) then + begin + Exit(SCE_KERNEL_ERROR_ENOMEM); + end; + + addr:=AlignUp(Pointer(node)+SizeOf(TvSubmitNode),4); + if (dcbSize<>0) then begin - dcbAddr:=AllocMem(dcbSize); - if (dcbAddr=nil) then Exit(SCE_KERNEL_ERROR_ENOMEM); + dcbAddr:=addr; + addr:=addr+dcbSize; end; if (ccbSize<>0) then begin - ccbAddr:=AllocMem(ccbSize); - if (ccbAddr=nil) then Exit(SCE_KERNEL_ERROR_ENOMEM); + ccbAddr:=addr; + addr:=addr+ccbSize; end; copy_submit_addr(Submit,dcbAddr,ccbAddr); - node:=AllocMem(SizeOf(TvSubmitNode)); - if (node=nil) then - begin - FreeMem(dcbAddr); - FreeMem(ccbAddr); - Exit(SCE_KERNEL_ERROR_ENOMEM); - end; - Init_gfx; node^.dcbAddr:=dcbAddr;