Skip to content
Permalink
Browse files
8257620: Do not use objc_msgSend_stret to get macOS version
Backport-of: d4c7db5060978302382549246f9ad6831f19377d
  • Loading branch information
Vladimir Kempik committed Jul 28, 2021
1 parent 1df635f commit 6d4ca218461062961fbc861905f214fe363bfd50
Showing with 9 additions and 4 deletions.
  1. +9 −4 src/java.base/macosx/native/libjava/java_props_macosx.c
@@ -236,11 +236,16 @@ void setOSNameAndVersion(java_props_t *sprops) {

char* osVersionCStr = NULL;
// Mac OS 10.9 includes the [NSProcessInfo operatingSystemVersion] function,
// but it's not in the 10.9 SDK. So, call it via objc_msgSend_stret.
// but it's not in the 10.9 SDK. So, call it via NSInvocation.
if ([[NSProcessInfo processInfo] respondsToSelector:@selector(operatingSystemVersion)]) {
OSVerStruct (*procInfoFn)(id rec, SEL sel) = (OSVerStruct(*)(id, SEL))objc_msgSend_stret;
OSVerStruct osVer = procInfoFn([NSProcessInfo processInfo],
@selector(operatingSystemVersion));
OSVerStruct osVer;
NSMethodSignature *sig = [[NSProcessInfo processInfo] methodSignatureForSelector:
@selector(operatingSystemVersion)];
NSInvocation *invoke = [NSInvocation invocationWithMethodSignature:sig];
invoke.selector = @selector(operatingSystemVersion);
[invoke invokeWithTarget:[NSProcessInfo processInfo]];
[invoke getReturnValue:&osVer];

NSString *nsVerStr;
if (osVer.patchVersion == 0) { // Omit trailing ".0"
nsVerStr = [NSString stringWithFormat:@"%ld.%ld",

1 comment on commit 6d4ca21

@openjdk-notifier

This comment has been minimized.

Copy link

@openjdk-notifier openjdk-notifier bot commented on 6d4ca21 Jul 28, 2021

Please sign in to comment.