From 79b0dc5652e6657ac51b4fe6b1e994d787eee48d Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Wed, 7 Mar 2018 17:17:25 +0300 Subject: [PATCH] Add check to prevent loading more than one Kotlin framework --- runtime/src/main/cpp/ObjCExport.mm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/runtime/src/main/cpp/ObjCExport.mm b/runtime/src/main/cpp/ObjCExport.mm index 7887b79fd4e..1073a78492e 100644 --- a/runtime/src/main/cpp/ObjCExport.mm +++ b/runtime/src/main/cpp/ObjCExport.mm @@ -897,4 +897,15 @@ extern "C" void Kotlin_ObjCExport_AbstractMethodCalled(id self, SEL selector) { class_getName(object_getClass(self)), sel_getName(selector)]; } +__attribute__((constructor)) +static void checkLoadedOnce() { + Class marker = objc_allocateClassPair([NSObject class], "KotlinFrameworkLoadedOnceMarker", 0); + if (marker == nullptr) { + [NSException raise:NSGenericException + format:@"Only one Kotlin framework can be loaded currently"]; + } else { + objc_registerClassPair(marker); + } +} + #endif // KONAN_OBJC_INTEROP