@@ -274,21 +274,28 @@ void init_platform_info() {
274274 const bool has_cached_platform =
275275 (load_result == ConfigLoadResult::Loaded &&
276276 config.platform_type .has_value () && config.platform_name .has_value ());
277+ const bool cached_unknown_platform =
278+ (has_cached_platform &&
279+ config.platform_type .value () == X_PLATFORM_TYPE_UNKNOWN );
280+ const bool use_cached_platform = has_cached_platform && !cached_unknown_platform;
277281
278- if (load_result == ConfigLoadResult::Loaded && config.platform_type ) {
282+ if (load_result == ConfigLoadResult::Loaded && config.platform_type &&
283+ !cached_unknown_platform) {
279284 g_platform_info.platform_type = *config.platform_type ;
280285 } else {
281286 g_platform_info.platform_type = discover_platform_type ();
282287 }
283288
284- if (load_result == ConfigLoadResult::Loaded && config.platform_name ) {
289+ if (load_result == ConfigLoadResult::Loaded && config.platform_name &&
290+ !cached_unknown_platform) {
285291 g_platform_info.platform_name = *config.platform_name ;
286292 } else {
287293 g_platform_info.platform_name =
288294 platform_type_to_string (g_platform_info.platform_type );
289295 }
290296
291- if (!has_cached_platform && load_result != ConfigLoadResult::Error) {
297+ if ((!has_cached_platform || cached_unknown_platform) &&
298+ load_result != ConfigLoadResult::Error) {
292299 SysutilConfig updated_config = config;
293300 updated_config.platform_type = g_platform_info.platform_type ;
294301 updated_config.platform_name = g_platform_info.platform_name ;
@@ -297,7 +304,7 @@ void init_platform_info() {
297304 write_platform_manifest (g_platform_info);
298305 log_platform (" Active platform: type=" + std::to_string (g_platform_info.platform_type ) +
299306 " name=" + g_platform_info.platform_name +
300- " source=" + (has_cached_platform ? std::string (" config-cache" )
307+ " source=" + (use_cached_platform ? std::string (" config-cache" )
301308 : std::string (" detected" )));
302309 g_platform_initialized = true ;
303310}
0 commit comments