I'm loading and creating a CFplugin using Core Foundation and running into a 
strange behavior where all the static variables defined throughout my code get 
reset to their initialization values when running code inside plugin. For 
example, I define a static variable and functions in a file foo.c

static int foo = 0;
void setFoo(void) { foo = 42;}
void printFoo(void) {fprintf(stderr, "foo is %d\n",foo);}
then I install and call the plugin code using

printFoo();    // <- prints "0"
setFoo();      // <- sets foo to 42
printFoo();    // <- prints "42"

PluginInterfaceRef *iunknown = CFPlugInInstanceCreate(kCFAllocatorDefault, 
factoryID, kMyPluginTypeUUID);

printFoo();   // <- prints "42"
which looks okay, but inside the factory function, called by 
CFPlugInInstanceCreate,...

void *myFactory(CFAllocatorRef allocator, CFUUIDRef typeID) {
    if(!CFEqual(typeID, kMyPluginTypeUUID)) return NULL;
    MyPluginRef result = MyPluginCreate(typeID);
    printFoo();   // <- prints "0"  ??
    return result;
}
printFoo() returns "0", and not "42".

I'm using Xcode 4.2.1, and all the functions appear to be running in the main 
thread.

Any ideas why this is happening, and suggestions for making static variables 
available inside the plugin?


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to