ConfigAPI: Check the version of the config api when getting the menu status

This commit is contained in:
Maschell 2025-01-05 15:22:30 +01:00
parent e4289a172b
commit ed37f28bd4

View File

@ -103,7 +103,9 @@ extern "C" WUPSConfigAPIStatus WUPSConfigAPI_InitLibrary_Internal(wups_loader_in
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT; return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
} }
// This one is allowed to fail. // This one is allowed to fail.
OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Menu_GetStatus", (void **) &sAPIMenuGetStatus); if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Menu_GetStatus", (void **) &sAPIMenuGetStatus) != OS_DYNLOAD_OK) {
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_Menu_GetStatus failed.\n");
}
sConfigLibInitDone = true; sConfigLibInitDone = true;
sConfigPluginIdentifier = args.plugin_identifier; sConfigPluginIdentifier = args.plugin_identifier;
@ -247,12 +249,12 @@ WUPSConfigAPIStatus WUPSConfigAPI_Item_Destroy(WUPSConfigItemHandle handle) {
return sAPIItemDestroy(handle); return sAPIItemDestroy(handle);
} }
WUPSConfigAPIStatus WUPSConfigAPI_Menu_GetStatus(WUPSConfigAPIMenuStatus *out) { WUPSConfigAPIStatus WUPSConfigAPI_Menu_GetStatus(WUPSConfigAPIMenuStatus *status) {
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) { if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED; return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
} }
if (sAPIMenuGetStatus == nullptr) { if (sAPIMenuGetStatus == nullptr || sConfigAPIVersion < 2) {
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT; return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
} }
return sAPIMenuGetStatus(out); return sAPIMenuGetStatus(status);
} }