Show API Mismatch if load fail on different API

Possible outcomes now:
- Same API + (Pre)load Fail: Failed message with info (eg MissingImports)
- Different API + Load Ok: Ask to continue
- Different API + Load Fail: Unskippable API mismatch error (instead of MissingImports or other)
This commit is contained in:
Willy-JL
2024-06-17 21:57:44 +02:00
parent 0cecb6d57b
commit 5634b2bf1f

View File

@@ -611,6 +611,7 @@ static LoaderMessageLoaderStatusResult loader_start_external_app(
preload_res == FlipperApplicationPreloadStatusApiTooNew) {
api_mismatch = true;
} else if(preload_res != FlipperApplicationPreloadStatusSuccess) {
api_mismatch_bypass_failed:
const char* err_msg = flipper_application_preload_status_to_string(preload_res);
result.value = loader_make_status_error(
LoaderStatusErrorInternal, error_message, "Preload failed, %s: %s", path, err_msg);
@@ -623,6 +624,7 @@ static LoaderMessageLoaderStatusResult loader_start_external_app(
flipper_application_map_to_memory(loader->app.fap);
FURI_LOG_I(TAG, "Loaded in %zums", (size_t)(furi_get_tick() - start));
if(load_status != FlipperApplicationLoadStatusSuccess) {
if(api_mismatch) goto api_mismatch_bypass_failed;
const char* err_msg = flipper_application_load_status_to_string(load_status);
result.value = loader_make_status_error(
LoaderStatusErrorInternal, error_message, "Load failed, %s: %s", path, err_msg);