diff --git a/loader.c b/loader.c index 52dfe17..8c0ed4d 100644 --- a/loader.c +++ b/loader.c @@ -212,6 +212,13 @@ OBJC_PUBLIC void __objc_load(struct objc_init *init) case NewABI: break; } + + // If we've already loaded this module, don't load it again. + if (init->version == ULONG_MAX) + { + return; + } + assert(init->version == 0); assert((((uintptr_t)init->sel_end-(uintptr_t)init->sel_begin) % sizeof(*init->sel_begin)) == 0); assert((((uintptr_t)init->cls_end-(uintptr_t)init->cls_begin) % sizeof(*init->cls_begin)) == 0); @@ -315,7 +322,7 @@ OBJC_PUBLIC void __objc_load(struct objc_init *init) } } #endif - init->version = 0xffffffffffffffffULL; + init->version = ULONG_MAX; } #ifdef OLDABI_COMPAT