Fix memory and resource leaks in failing resource provider open callbacks
When an mjpResourceProvider's open callback returns 0 (failure), MuJoCo does not invoke the corresponding close callback. Previously, several resource provider implementations allocated heap memory or system file handles before encountering an error, failing to clean them up before returning 0. This change addresses these leaks across the codebase and clarifies the API contract. PiperOrigin-RevId: 929803942 Change-Id: Ib7344033726895cdf037a8d9356ffc183c78c2d3
This commit is contained in:
committed by
Copybara-Service
parent
c31e94cee6
commit
edbe6a6f74
@@ -1871,7 +1871,10 @@ mjfOpenResource
|
||||
|
||||
typedef int (*mjfOpenResource)(mjResource* resource);
|
||||
|
||||
This callback is for opening a resource; returns zero on failure.
|
||||
This callback is for opening a resource; returns zero on failure. Note that
|
||||
if this callback returns zero, the ``close`` callback will not be called.
|
||||
Therefore, the ``open`` callback is responsible for cleaning up any allocated
|
||||
memory or resources before returning zero to avoid memory leaks.
|
||||
|
||||
.. _mjfReadResource:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user