From 151a4d859cb95a057f03ed62045c97373744ac08 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 3 Apr 2021 22:30:49 +0100 Subject: [PATCH] Safer file loading, better showing of fatal errors (drop out of double buffering) --- !TheEsc/!RunImage,ff8 | Bin 20344 -> 20428 bytes !TheEsc/c/Graphics | 6 +++++- !TheEsc/c/Mission2 | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index d241a353eefc2660cb580e3f9d4de5ea96bc700f..aa988abb5f1a0d51333bf0ff9bd2889bd107d6a9 100644 GIT binary patch delta 3177 zcmZ8j3s6&68b0Ud0YL(Z2rMEd7;Hd{P#(JD6O>0S3W;5GU0il%It(5ENIO1!y+1A%|ienkEVs)lV#kF)yuD2_uPO-kaV>SC7z>zjHf6jlu|N9^J zod2A2fBBfVH}P=BWRH+w#(dwKna|AFPvtwqFPN7NW@lGP%ooaJ;$O3I*@(_U^*NJMeWDSLQ^ z>@mW#r?N>6G|8S=w&nKi9ZjmiDtiKfKcag)vLXeUllybb$9VqIY_HBZf1jSQ|MYO? z(}S&pcM^Cn_48(7)UsMHE0sNYy;zOPSel|^Y^Wl9z)u!$)X&f99UD|uTB(}EyOlsy{E%Mh!qv@Eu$ z8dlrQthH*}8jBi$JfiY!j zg3iu!$fa8<{gOhH^$}#!n_`C9;EW_=kmR9>-4RPVqD5ACd!2V8P0~m9vWf<SI;Cee`T z7B!Gnt0AxjW7L|eRc5VLzw3|9Sd*Gf&4GytC5SsL$AUHyt#VUgMY58~YPv_ywx~K} z&?18s>|}ZxXyNe`V@OKLh0hv9-ret4>}-PX`zmLZUM=DrS!Pj1a|mBOcqS8VGK`XR zCOTvos(Tj7?%bq{2K%Jp{c$GdT2$Vb_jcBt7kP#6olxd0#VBe)UALddyhV|kD3$Lg$DnPx_A89trq2g$ zFw}*zvlcX`Oqs!Xyq@ZVZKfJz=D?ECs8xtW=YnIXD|j2vpcTe<`Ea^twDDIdJjBAs zQhG=de?TQ61^h038j>iIg+%K5l0U`sRZ0j=;vdl5P&+^4t_sc77&(rZQ@t~{S$#$w zgYD)AIFuTm`LT*=%1CV49x{ei@J^}^v+y?e(Xc6;FQU6cHt?;qB0Mp36X=Z9s}hUz zGE<`}nPRK1wVm0!Y>(uI~eQvnz2r5j!5LHyCcG; zGsXc(!|XUA?W7xK=iA+mVY@g_pw^g=Bxw*W89tlKbb9!I`6sm3@>EPsd2q~Q&)sSS*v<{fbaTV zy;aTB;^2g>nLf2HN+|4$;;9U>s8+T^U4O~xZDI5G;h?$x-T?0cniLz&D`{@5-SHOi z1Ys+}zH-WnhPjj>MKv8moHebZoi*yJe!pV$PbwXaP2~&86Kmsz_>ZJvBi0#H`Wd1x zA5-Iq?feQkY>Tki^|tfSU2#eLJXOW{_!jq@BSSfVLK|N?$@AUm_Gr!n$QA#(6x=~) z;#0&r#y>W%48(bjNfN85L(o`ym@tp`kZaTpEW0Do&RgAui2)LyMhhIfcnm#s6iCJZ z${CZxA5;C9NGT|Q4vcxk+o>_h#t*sAB`uPSiF&*wwv^b?@#ILEV2A>8`jOukNo!K7 zd6)ZPij8AEqS6x4O4(^PUPCL=#u<<4`qoT?Qp)IPTAAd$;vSJchD&-K%^I5$G8ly7 zyuQexI{JEig!|ywTN+Wz_*A1t%Y1S{pOw+hv61duYEfb>94v@oS{9mb<+Kcd!3GM?eQ7jAhy8si`3gEy%**3q9#>b0A^NuyQs9O z_d*aC<(IgSP0n3vF)LJXEq-|6XTMLJ6DI81Vw0>)#>FpAg9MD?dK3OxILiWAZSN@& z0B$gJ5gYMRl^$&Me@gv_2FjYbxYSxwzOF^aRo{CX)f3c|wo#OOp@FBN^Vbk|>&;9I=4(-!P$#mcVFi)M}_z}?} zkl{0A)r@|}n}W=bktHIu;5U_=0oF)wPqp*A?!8k7aibHC1j&c&q|?*#bX%YK@3fF1 zYaHK9nOPI~TeLANiLa!i_+Lm}_@70_>}fa{T-j6jHQJe70j4=;HNQ?(IpfUDKZ%#Z zOCFxreG|Lm?{qO|seZ+EToacmCAU_3a@l<*cNWh+a*?q&zQX5kCu5~I7?bb`ES{Zk z63?f8V9bwSWn~{Gu1SGC|B2^zw`;mv6H|AAv3SU6i1>*xrI2-ya*CZ?OY=P{C9E2Q)oPxA8kU9TH%9t5IPxCkYAI1F> AH2?qr delta 2953 zcmZ8j3s98T6~1R*u*)vH>k5bqF1XNDsjLEusKiA@>HwlKL0d#6Vof5xV@rHg8If2Y zRdTS#gvxJ?jW#x^Zj$O)J34B7p{+(cHqLb1-T95Mv0}7I+M?U<0*)mA%-MVX?|kR+ z-+S)8+uB0k?x8p#lz+Cv zACq(Ft9_)G5)ub0+FrXX#Pp@hMJ>ijOBTN-@T`IU!YeiNS3pnWz2q4jkK)8sB|ttU zV1eh|^(|_&O$nrmO?PkaXi<$RN+23|fFDpo6CfYdpq7cF~@OT1)tb zW*;5m*R}4rTFj};A$%KEnMZ!-3O=lL(L%neby79o)4GypfhFf{>46HP7SVTiy(^)m zFFV`L@K9ax&_#A}Tr*V(Xz|5;QZSto)7Ar(}z*xg|1`h@JputTRzHC@RJ2*dT zSKK9ZMwFNuI1!0l>^NA_rah?ylDI9(WA~+ZSJ8kfC~AFhCZ|TbjjL?v2Gp{iOQYSS z@Um!!WgKD%(WKhYQ)jp_I>BNOB~&2l+Xj`p zR6XWXhwn`RdjK1aE{f;DMz3)Me3l`56IU4%`W*PFOO>lDnFgRwti0Jc#Q4xE!VbI| zxWMGle`yu%Tlt33lWy*D9#!O0sXN(S-;8I;WQd!bYD%DMoM&<-UV^6?*p38QWS!dN zk)ski%Zp4!MnA0G?RLWCrTu&lel4tz$)-0sFJ_Cr_OF-#z7Vt8xXLPyyU)ckw{1CUBw)kPVoMN-ubLD2wpq{Z=FODJD=lx3nIBu+G>TJWU6jTJv0gd1v1N3N zPsL`)gs}3;3h`VGwdR>U-D_B$hI6i|u^9SPHdduI?jJE-HLTcHb5ckoKG;~>n-mHW+adJv7ZQ>VG zGVBXYXg;43YQ-je7n~W~nBqv@(~CW?OFyd?=x|_(v+6EBl`@AWaB8a4QrnA{&y!P~ zw3z3odi2%66SxtKSv`zuta~aSOU*`=_JIkOeyGWZh=~{{0NG+m>0!z)Qu*M(?R0|k z+;gx{yWOXuSEhOCFmFo>)6e{`r(22I_?JKU6HW6Mc$`Egt{k*LbM!iYIw(u7!Ju#K zGox`1;**8grs@&Y$~2^cnz?ewEi74HhKKzAs*ETN4d+*e?xGl`%redY4E%iNr2eWw z9B=B3gbzg`;bj;NkmSda@V5p&lKC~&@OMc3B6XrWTCj*T!EyqpEd1X$nrCHy-CR!9%#m911XgaU>Ge=~S=8=wP zkIae{AXFE3M}DmH?-}`DEvdYFbaw0m++<2wx8+}2-ZL`Z-!b|;Q6(Q6JA;bYp6{Rv zPS0PcuSe@N^UnN-T%$G5zN6_{?yg(Mht{@>jd#b+ZRt7%41J1x(50^=pR6rU)v7- zeds#qUqFw27ztPVl+f?7qkqeXeU5c;K+Xf%2jp$&LLO7tK<9@kA&pH5S%4)@!QBq~ zo4xGCu;ZW)>47aSQ$h^;=I`0j6rsn++K%{CQXkv`PF*h!a*Xau@(83OAZb9_08(u) zQZ*700)@ee2S*D|EjUYfna^Pf0u3Ym3Lp!(5y|V5QeDvSAQB!3Y^_%bz32jlcNOB5G4W3V_nvVCd}VWFV-&U~ z-jHRtWcS!V`zqp0<>BMAv6JVIA45-g?|4U|5fS38W#7rv+7StV$d|`^DB}P3_!zRh z1k!%UT*yAQOf1&F^CZ$O?QCVJh^}QXY=qYOX4r0DOPpI2=1_ z;W~Po=TBNfVZJdb*M9uIEE?VZens0>Y=l9aTr|%R_Ya)ct=v%5ps`)?$NuPfDw%mf zh<+FGH}IwqNww d$Sg<=WDR61q#5!q 200000) - { + { + screen_nobuffer(); printf("Sprite file %s seems unreasonably large at %i bytes",filename, length); exit(0); } @@ -44,6 +46,7 @@ void load_sprites(char* filename, unsigned char **buffername) if(buffername==NULL) { + screen_nobuffer(); printf("Couldn't malloc %i bytes for sprite buffer",length); exit(0); } @@ -85,6 +88,7 @@ void display_mode(int mode) inreg.r[1] = (pitch * height * 2) - outreg.r[1]; if (_kernel_swi(OS_ChangeDynamicArea, &inreg, &outreg) != NULL) { + screen_nobuffer(); printf("Couldn't OS_ChangeDynamicArea"); exit(0); } diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index a944958..a729141 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -46,6 +46,13 @@ void game2_loadmap(char* filename) // Length will be in R4 if it exists length = outreg.r[4]; + if(length > sizeof(map[0])) + { + screen_nobuffer(); + printf("Map exceeds %d bytes (%d bytes)",sizeof(map[0]),length); + exit(0); + } + // Attempt to get file info inreg.r[0] = 16; inreg.r[1] = (int) filename;