From 22cc2554b121453a9414d5390ab695ff2d6a97d2 Mon Sep 17 00:00:00 2001 From: Jopestpe <47086979+Jopestpe@users.noreply.github.com> Date: Mon, 23 Mar 2026 07:28:28 -0300 Subject: [PATCH] Fix Memory out of bounds in [shapes] example - ball physics (#5683) Update screenshot to shapes_bouncing_ball.png --- examples/shapes/shapes_ball_physics.c | 6 ++++-- examples/shapes/shapes_bouncing_ball.png | Bin 15523 -> 9564 bytes 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/shapes/shapes_ball_physics.c b/examples/shapes/shapes_ball_physics.c index f01a7c8e1..9aba0cf57 100644 --- a/examples/shapes/shapes_ball_physics.c +++ b/examples/shapes/shapes_ball_physics.c @@ -45,7 +45,8 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [shapes] example - ball physics"); - Ball balls[MAX_BALLS] = {{ + Ball *balls = (Ball*)malloc(sizeof(Ball)*MAX_BALLS); + balls[0] = (Ball){ .pos = { GetScreenWidth()/2.0f, GetScreenHeight()/2.0f }, .vel = { 200, 200 }, .ppos = { 0 }, @@ -54,7 +55,7 @@ int main(void) .elasticity = 0.9f, .color = BLUE, .grabbed = false - }}; + }; int ballCount = 1; Ball *grabbedBall = NULL; // A pointer to the current ball that is grabbed @@ -214,6 +215,7 @@ int main(void) // De-Initialization //-------------------------------------------------------------------------------------- + free(balls); CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- diff --git a/examples/shapes/shapes_bouncing_ball.png b/examples/shapes/shapes_bouncing_ball.png index 9d98e3a889d13b73e276354be935e906f5f63143..a9555b5c7f0df8cb569c7c5ad612b883d4aee3ca 100644 GIT binary patch literal 9564 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 literal 15523 zcmeHOeN+=y7N3L^q67`%N`eIv5mt9uWKF1+Z-FKt1yi8arCOq;5CSR-5q8l^KnQ-s z0xezGxVYjN6bg!hF3_cbph6Lr0RctPvWgo%1go(16FMIRCYpfTdQQ)tGylxtOon;) z{_cIhci->6*(dPl8_hMF3jlzTkGEF<0O+v*fOMX!58pBUxVQlToW(v~Yl8mt(Z|o8 zj14Br-m^C&gKQla36+!&2`r3~AUZ?qg_Mw5BQgl(79W(=h^TTc7khb}JI|z6`;YKH zlo%#K%nZoOMVA@w|DZGON#!=@blOmf*>GB?4TuTtI_!f@xR03-^oyE6TC}CAzN&5i zGG$0zdQwMb;o*$ldW8WeEht{#drM@))QUeGm>P33=v%@Iyrc_apvOa+8gxj=F{~e` zQy#v;G|Kt(SogXj*NwyMu5Tc&vo7SNOftw}fdyN*6rQJ0%SF14ZQo5|`bFtZAQ;+t z4WccJby zw2DdhIKC$DUkft|4{xw+A6RHBdAjdxS~tfTj7Zet4(y^VmMU+N%JWBlda||tj>2zUUONMw%Y>*R@~UQ;ZW5(pFE8AYIg@Ctzffdat`NM%K!K%k&5u!&qC za)HPN{C%`>2~m3U>r%9+w|Pa==w@k(2e{Veb{+rAQ( zj(RjyBkDYoINsHLjgKLRZ_Xdhz2b2$viu3I9U-^JcMO>D-~C@D^ds| zGomGYl!}^A_)_MpwF~W$``IQ)&(Q6w&unki?-j;f7geHy*paQ6+Ejvv0H0E%pCoMp zeQbM1w&Ov&YBRrUa6r#sQ^P=GYT)y7R>=y5T>k~gPneMRL^QUm9()B&N~ex+U^Jhi zq|^vSkJ95@d8OURh%i|o@#+5`vl*Fw;VfRb8?W>l`Wjm-%$qgTBmtG?#TS-6{Jr7= zYHEfjYPW@k-6^SnixUORO^1dYko=ZfkmVuOyPvz6*}jnbRve1|z-p-eHfWv>y@@^i zTTFJmh(}NU9sS5V{LRR?N_43ESc*NtM-t91X&O+$Spw#M26=Ijk=>(EifI2<<7G0S zlg_%rWWrQw^EZ@`Vz7+grr`$Oan&L+xDyuHHM!ehNGsyC zpdkH(TLdpjlK`t0ldGz#f=-u|mov7_D{l5WcYtxp>g%+_!^f5i3;O&6>crd$b?xJg zHH^4!_yrQr9d|TfUYqq8wKHp#fVM@AbS}BHYRrU=8BGYpc?2(>we%yM zeX_D|mi}=xrVgrC7sPue;ls*hEf~HMe3Pr-O`Qh8D^@yYbhyrEX2nfgm8h<~;PsN& z>JwXib=gGZ0+9C+vI}+?j zup_~a1Un*3NT5KVKzyozepE$#utD@A5JH5zStazy_P(ZUpO~zZC+#*okM80x6Y%Pc z98!e+$ycMTK5#i3bJ_iZDLe7}4F|zvaY_Eeq_yi*->(rT)#J73pnd(pt_w4_d;#h_Q-jZ zl9`T8*n*qk56q6G0L5W@qbo?CQkXrvw{(@YU+)16#GxrtyY7!xc|6Or_>ErQE$FWY zpaq{ywu@!!v6DM0ZHozV4?ejAG;&zkKF&slcTIx(t;#yH1>S9uUb#0i6B5!^RV+_$ zJ3CxHWF2=mxlJP7HW581KBwB-?>||?#w-WdMx&A1fc4)gn2e$wOy%P*H%@#WIU+E; z1-*57s=o(Jb}`v%uwUv%OAJYce@{+r>MQ37=Nv5i+;M?#QNn2E>XUMC`x{=YfUrG3byWEG~1@c@>uEhMh;I2Tt;`F%X zR?q3CCT$pN2sp#Qz>{#|QL^K#6@$Dg)3KJ(tB_gRyR>Mm_8Fw1*~ zn{wRRA;kE@C6JQ^^%`I7nAdrenviN*!D%eppD6w^t^Q)2>fHuWWQ01VVOUIW%oNkx zU8h1O(q%vBvJW=0)e1W#gq~D-!Tc#7{x8q4P0y}ZI)VWJ-pTyEp@-}u;E#_1pLhJd JPI?HFe*~UJXl(!h