Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Safari plugin crashes on NPN_GetValue
- static bool mainNPObjectInvoke(NPObject *obj, NPIdentifier identifier, const NPVariant *args, uint32_t argCount, NPVariant *result)
- {
- printf("create main object");
- MainNPObject *mainObject = (MainNPObject *)obj;
- if (identifier == methodIdentifiers[METHOD_ID_GET_DEVICES])
- {
- NPObject *windowObj = NULL;
- browser->getvalue(mainObject->npp, NPNVWindowNPObject, &windowObj);
- // it crashed here
- ....
- }
- }
- NPObject *createMainNPObject(NPP npp)
- {
- MainNPObject *object = (MainNPObject *)browser->createobject(npp, &mainNPClass);
- object->npp = npp;
- theMainObject = object;
- return (NPObject *)object;
- }
- NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
- {
- PluginObject *obj = instance->pdata;
- switch (variable) {
- case NPPVpluginCoreAnimationLayer:
- if (!obj->rootLayer)
- setupLayerHierarchy(obj);
- *(CALayer **)value = obj->rootLayer;
- return NPERR_NO_ERROR;
- case NPPVpluginScriptableNPObject:
- if (!obj->mainObject)
- {
- obj->mainObject = createMainNPObject(instance);
- }
- ....
- }
- static NPObject *mainNPObjectAllocate(NPP npp, NPClass *class)
- {
- initializeIdentifiers();
- MainNPObject *mainObject = malloc(sizeof(MainNPObject));
- mainObject->deviceManager = [[DeviceManager alloc] init];
- return (NPObject *)mainObject;
- }
- typedef struct
- {
- NPObject *npobject;
- NPP npp;
- DeviceManager *deviceManager;
- } MainNPObject;
- 0x00007fff83f82dab <+0019> je 0x7fff83f82db9 <_ZN6WebKit14NetscapePlugin7fromNPPEP4_NPP+33>
- 0x00007fff83f82dad <+0021> incl 0x8(%rax)
Advertisement
Add Comment
Please, Sign In to add comment