Copy arena contents in mj_copyData.
Fixes #1710. PiperOrigin-RevId: 651351384 Change-Id: I56e3204b30bb18f48278117e85e90464177da973
This commit is contained in:
committed by
Copybara-Service
parent
f9ab89b205
commit
e7301edd20
+15
-1
@@ -1265,10 +1265,24 @@ mjData* mj_copyData(mjData* dest, const mjModel* m, const mjData* src) {
|
||||
}
|
||||
|
||||
// copy arena memory
|
||||
#undef MJ_D
|
||||
#define MJ_D(n) (src->n)
|
||||
#undef MJ_M
|
||||
#define MJ_M(n) (m->n)
|
||||
#define X(type, name, nr, nc) \
|
||||
dest->name = src->name ? (type*)((char*)dest->arena + PTRDIFF(src->name, src->arena)) : NULL;
|
||||
if (src->name) { \
|
||||
dest->name = (type*)((char*)dest->arena + PTRDIFF(src->name, src->arena)); \
|
||||
memcpy((char*)dest->name, (const char*)src->name, sizeof(type)*nr*nc); \
|
||||
} else { \
|
||||
dest->name = NULL; \
|
||||
}
|
||||
|
||||
MJDATA_ARENA_POINTERS
|
||||
#undef X
|
||||
#undef MJ_M
|
||||
#define MJ_M(n) n
|
||||
#undef MJ_D
|
||||
#define MJ_D(n) n
|
||||
|
||||
// restore contact pointer
|
||||
dest->contact = dest->arena;
|
||||
|
||||
Reference in New Issue
Block a user