Index: src/OFPlugin.m ================================================================== --- src/OFPlugin.m +++ src/OFPlugin.m @@ -54,11 +54,11 @@ @throw [OFInitializationFailedException exceptionWithClass: self]; [pool release]; - initPlugin = (OFPlugin*(*)(void))dlsym(handle, "init_plugin"); + *(void**)&initPlugin = dlsym(handle, "init_plugin"); if (initPlugin == NULL || (plugin = initPlugin()) == nil) { dlclose(handle); @throw [OFInitializationFailedException exceptionWithClass: self]; } Index: src/OFThread.m ================================================================== --- src/OFThread.m +++ src/OFThread.m @@ -239,11 +239,11 @@ - initWithBlock: (of_thread_block_t)block_ object: (id)object_ { self = [super init]; - block = [block_ retain]; + block = [block_ copy]; object = [object_ retain]; return self; } #endif Index: src/OFThreadPool.m ================================================================== --- src/OFThreadPool.m +++ src/OFThreadPool.m @@ -92,11 +92,11 @@ object: (id)object_ { self = [super init]; @try { - block = [block_ retain]; + block = [block_ copy]; object = [object_ retain]; } @catch (id e) { [self release]; @throw e; }