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 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYU_8XZ#=yWJp1k%11A|SLr;B4qMO^ZqUteF> zw*?wVF)dcaL6mSXF1r{Y$J=;OKmselSk-zUgFVG$ZExFw42~Wwgh5Z4gPZU{?2*GaR-HNW5+6QQL;o4Z9$2*oe~&ASYbL;l7@>10Ntx2pLc(Fp4GZ zJ+k*wm&Vfg!~Km{C$5?|;o*^4?8faOY^G@;lzKbR{xI(@`l4-HA!s3-lCM<5w30R1R zJVk?BjFP@NxDya}<3+v`8A;N(T)!ZiW5OQxmJ9cIzt{>tdH3~zDAST#{KoAuKe1iVWpT4sSlpS5-3B-3hCD@wFLDAw->rDQ?iE~IZS7Y45W6=5 z?7_YazKUJCrwtUfA75Wz|KI&^H7@HCOjuqBf+O-}4lXrRh)7T#U52xqXnZIRcEZZ4 zQ70%Y9t{O>xiXp-K&9(wD2#@}Xz2)QUyg>tXehwC8KY@oG%bv#1>|1SXpR`o5me0) zjMFY|z!=(L%uy@|I?kDYU`G5+bEyJo$KIic!=Uc(udn|zc3=#$FlexFlv)+EUdl*M zG5HG~0uqpBS}Z%^;ua(1kp*QNmJ@GFddl3~HlG9aXBjLN4R*1onA`hj9KM& z4vwDO#_qx|LFx{C-~^8lT|pVAP&QzBan(~Ic9!X^z2L!#3(g58Y$+zbFoVEaIk*|C z&IRC4Kp!UWbf~IXNXL zSTil2JKjQ ze0qah@V5+(o;P4$pJhbxHPk_1u@Z=nagXF+8vtND<&R z!2@!akAWNkA5eZEu)x(l5oGUDuq_`TN$eMLOg3H=XlQ5HX{@w(Zr?>06OhdgIp8AV z@+lO<+8C}0C|r@0d|T3^HV2e07>gh&J`Zd*HsXaC)8c9eH?*<_6tU14AF`PSDTNGF zz8!S}N*;3_umY6Y5z&xpvc?@=f4q=p+Pime$i@vjc1Yy$tv&0qty|)_^6vI|@0O?} ztbFPhbU4f8KdkNJ0hur|u?J;iw2BqXC2G#l$LlhmnUdD^{W74J*WBN9OME+pTo<%tdcz_sy``n+wo+j=QKO zA;MyQ~5=KK|G!$S3<7iqKO$(!G0lAVK%@LzHVl+pL)Eu!Onqz}N_T{Iir+XGn zS+`Cv;%~uqcZ~qI!@Q;~2``&&6ex$;ZY?_Fa8z8e{?HxMfS*|#mVIvY@_+HsF{^5s z$=r#r-#^UKU;2|-tp1B$zT0gp*aT4!Wa-IUd=rWh9$PzaOpGci&Rohr{r5@PlZ&o$ zNUXinob6J);>hKMv#-DK*%uv7T(Pt`Yx(s?Kl_$6Cyuig6K0>&_-elMW!trXOT%g& zeUe{k9L}>CJWmQH8q^dGKyoZ- zxqSQX;+0t`Ee(3N;>?}?ER@q?etQ4n%N%#xH?Q!2Ui=hT@0ld|6jaNoaZb_PDb#{iwhRD=aK#%y#6H{+`L zO|7S&?r=-s?A=Yu4-% zmF$dVpDtd`aPwY%Q9$B{zy;M$U)Da93V-oW-gh!Ww=-mcP4FAIFA0a9^T2yX zMH6ACS1$vnzpU{RUpPZ5Yx(aBR)0KVnfp%LzIev-HF%0gsr}M_s;2RR(MlJs