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
@@ -33,7 +33,10 @@ struct mjResource_ {
|
||||
};
|
||||
typedef struct mjResource_ mjResource;
|
||||
|
||||
// callback for opening a resource, returns zero on failure
|
||||
// callback for opening a resource, returns zero on failure.
|
||||
// Note: If opening fails, the close callback will not be called. Therefore, the
|
||||
// open callback is responsible for cleaning up any allocated memory before
|
||||
// returning 0.
|
||||
typedef int (*mjfOpenResource)(mjResource* resource);
|
||||
|
||||
// callback for reading a resource
|
||||
|
||||
Reference in New Issue
Block a user