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