From 4db3377467414fb7b33ce33b9c1935ef57e65d60 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Thu, 24 Aug 2023 13:09:08 -0700 Subject: [PATCH] Don't use `mj_stackAlloc` for int allocations. PiperOrigin-RevId: 559846094 Change-Id: I43eeec0b1970b2c6047be4e7c3548a4ce9aa6f5f --- src/engine/engine_core_constraint.c | 2 +- src/engine/engine_forward.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/engine/engine_core_constraint.c b/src/engine/engine_core_constraint.c index 310d3942..82a66012 100644 --- a/src/engine/engine_core_constraint.c +++ b/src/engine/engine_core_constraint.c @@ -1615,7 +1615,7 @@ static inline int mj_nc(const mjModel* m, mjData* d, int* nnz) { } mjMARKSTACK; - int *chain = (int*)mj_stackAlloc(d, m->nv); + int *chain = mj_stackAllocInt(d, m->nv); for (int i=0; i < ncon; i++) { if (d->contact[i].exclude) { diff --git a/src/engine/engine_forward.c b/src/engine/engine_forward.c index fa174af2..9b217dfa 100644 --- a/src/engine/engine_forward.c +++ b/src/engine/engine_forward.c @@ -774,8 +774,9 @@ void mj_implicitSkip(const mjModel* m, mjData* d, int skipfactor) { // set qLU = qM - dt*qDeriv mju_addToScl(d->qLU, d->qDeriv, -m->opt.timestep, m->nD); - // factorize qLU, use qacc as scratch space - mju_factorLUSparse(d->qLU, nv, (int*)qacc, d->D_rownnz, d->D_rowadr, d->D_colind); + // factorize qLU + int* scratch = mj_stackAllocInt(d, nv); + mju_factorLUSparse(d->qLU, nv, scratch, d->D_rownnz, d->D_rowadr, d->D_colind); } // solve for qacc: (qM - dt*qDeriv) * qacc = qfrc