diff --git a/src/user/user_api.cc b/src/user/user_api.cc index ad93f468..46b44ee1 100644 --- a/src/user/user_api.cc +++ b/src/user/user_api.cc @@ -126,7 +126,14 @@ mjSpec* mj_parse(const char* filename, const char* content_type, memcpy(resource->name, fullname.c_str(), sizeof(char) * (n + 1)); } - return mju_decodeResource(resource, content_type, vfs); + mjSpec* spec = mju_decodeResource(resource, content_type, vfs); + if (spec == nullptr) { + if (error) { + strncpy(error, "could not decode content", error_sz); + error[error_sz - 1] = '\0'; + } + } + return spec; } // compile model diff --git a/src/user/user_resource.cc b/src/user/user_resource.cc index 378daa0f..072df4ad 100644 --- a/src/user/user_resource.cc +++ b/src/user/user_resource.cc @@ -117,8 +117,8 @@ mjSpec* mju_decodeResource(mjResource* resource, const char* content_type, const decoder = mjp_findDecoder(resource, mjuu_extToContentType(resource->name).c_str()); } if (!decoder) { - mju_error("Could not find decoder for resource '%s'", resource->name); + mju_warning("Could not find decoder for resource '%s'", resource->name); + return nullptr; } - return decoder->decode(resource, vfs); }