@@ -568,48 +568,30 @@ pal::string_t pal::get_current_os_rid_platform()
568568 pal::string_t ridOS;
569569
570570 char str[256 ];
571-
572- // There is no good way to get the visible version of OSX (i.e. something like 10.x.y) as
573- // certain APIs work till 10.9 and have been deprecated and others require linking against
574- // UI frameworks to get the data.
575- //
576- // We will, instead, use kern.osrelease and use its major version number
577- // as a means to formulate the OSX 10.X RID.
578- //
579571 size_t size = sizeof (str);
580- int ret = sysctlbyname (" kern.osrelease" , str, &size, nullptr , 0 );
572+
573+ // returns something like 10.5.2
574+ int ret = sysctlbyname (" kern.osproductversion" , str, &size, nullptr , 0 );
581575 if (ret == 0 )
582576 {
583- std::string release (str, size);
584- size_t pos = release.find (' .' );
585- if (pos != std::string::npos)
577+ // the value _should_ be null terminated but let's make sure
578+ str[size - 1 ] = 0 ;
579+ char * pos = strchr (str, ' .' );
580+ if (pos != NULL )
586581 {
587- int majorVersion = stoi (release.substr (0 , pos));
588- // compat path with 10.x
589- if (majorVersion < 20 )
590- {
591- // Extract the major version and subtract 4 from it
592- // to get the Minor version used in OSX versioning scheme.
593- // That is, given a version 10.X.Y, we will get X below.
594- //
595- // macOS Cataline 10.15.5 has kernel 19.5.0
596- int minorVersion = majorVersion - 4 ;
597- if (minorVersion < 10 )
598- {
599- // On OSX, our minimum supported RID is 10.12.
600- minorVersion = 12 ;
601- }
582+ pos = strchr (pos + 1 , ' .' );
602583
603- ridOS.append (_X (" osx.10." ));
604- ridOS.append (pal::to_string (minorVersion));
605- }
606- else
584+ if (pos != NULL )
607585 {
608- // 11.0 shipped with kernel 20.0
609- ridOS. append ( _X ( " osx.11. " )) ;
610- ridOS. append ( pal::to_string (majorVersion - 20 )) ;
586+ // strip anything after second dot and return something like 10.5
587+ *pos = 0 ;
588+ size = pos - str ;
611589 }
612590 }
591+
592+ std::string release (str, size);
593+ ridOS.append (_X (" osx." ));
594+ ridOS.append (release);
613595 }
614596
615597 return ridOS;
0 commit comments