From 3f855f32d9b14179e17812056732d6809f0b4320 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Fri, 20 Dec 2024 10:10:25 -0800 Subject: [PATCH] Fix stack allocation leak in `mjv_addGeoms()` PiperOrigin-RevId: 708356387 Change-Id: If3d227028ea8f809390911b578878d985d9d7b1a --- src/engine/engine_vis_visualize.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/engine_vis_visualize.c b/src/engine/engine_vis_visualize.c index e48f1834..2764bee7 100644 --- a/src/engine/engine_vis_visualize.c +++ b/src/engine/engine_vis_visualize.c @@ -1730,6 +1730,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt, category = mjCAT_DYNAMIC; if (vopt->flags[mjVIS_TENDON] && (category & catmask)) { // mark actuated tendons + mj_markStack(d); int* tendon_actuated = mjSTACKALLOC(d, m->ntendon, int); mju_zeroInt(tendon_actuated, m->ntendon); for (int i=0; i < m->nu; i++) { @@ -1827,7 +1828,6 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt, int ncatenary = m->vis.quality.numslices + 1; // allocate catenary - mj_markStack(d); mjtNum* catenary = mjSTACKALLOC(d, 3*ncatenary, mjtNum); // points along catenary path @@ -1852,10 +1852,10 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt, FINISH } - mj_freeStack(d); } } } + mj_freeStack(d); } // slider-crank