From 1be1ed014b1deacb51fef4bd83a1c5dea9094232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 30 Aug 2017 15:25:01 +0200 Subject: [PATCH] macOS: Use [NSObject superclass] instead of class_getSuperclass The former takes into account dynamically generated key-value-observing (KVO) subclasses, of the form NSKVONotifying_*, which would result in class_getSuperclass returning QNSWindow and recursing back to the original call site of qt_objcDynamicSuper. Change-Id: I4b8b1aa64d2834d9d1baa395c877319e99084bc8 Reviewed-by: Simon Hausmann --- src/plugins/platforms/cocoa/qcocoahelpers.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h index 1f4f9cd276f..78107332556 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.h +++ b/src/plugins/platforms/cocoa/qcocoahelpers.h @@ -223,7 +223,7 @@ ReturnType qt_msgSendSuper(id receiver, SEL selector, Args... args) typedef ReturnType (*SuperFn)(objc_super *, SEL, Args...); SuperFn superFn = reinterpret_cast(objc_msgSendSuper); - objc_super sup = { receiver, class_getSuperclass(object_getClass(receiver)) }; + objc_super sup = { receiver, [receiver superclass] }; return superFn(&sup, selector, args...); } @@ -236,7 +236,7 @@ ReturnType qt_msgSendSuper_stret(id receiver, SEL selector, Args... args) typedef void (*SuperStretFn)(ReturnType *, objc_super *, SEL, Args...); SuperStretFn superStretFn = reinterpret_cast(objc_msgSendSuper_stret); - objc_super sup = { receiver, class_getSuperclass(object_getClass(receiver)) }; + objc_super sup = { receiver, [receiver superclass] }; ReturnType ret; superStretFn(&ret, &sup, selector, args...); return ret;