From 5e867be90e14d6e6698e6de615f3db93a45fdccf Mon Sep 17 00:00:00 2001 From: "jst%mozilla.jstenback.com" Date: Fri, 27 Aug 2004 01:04:46 +0000 Subject: [PATCH] Fixing bug 256944. Adding NPClass argument to NPAllocateFunctionPtr to make it easier to work with dynamic NPClasses. r+sr=brendan@mozilla.org, a=asa@mozilla.org git-svn-id: svn://10.0.0.236/branches/AVIARY_1_0_20040515_BRANCH@161371 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/modules/plugin/base/public/npruntime.h | 2 +- mozilla/modules/plugin/base/src/ns4xPlugin.cpp | 2 +- mozilla/modules/plugin/base/src/nsJSNPRuntime.cpp | 5 ++++- mozilla/modules/plugin/base/src/nsJSNPRuntime.h | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mozilla/modules/plugin/base/public/npruntime.h b/mozilla/modules/plugin/base/public/npruntime.h index 14047c41fee..dc53d5fed09 100644 --- a/mozilla/modules/plugin/base/public/npruntime.h +++ b/mozilla/modules/plugin/base/public/npruntime.h @@ -274,7 +274,7 @@ int32_t NPN_IntFromIdentifier(NPIdentifier identifier); The NPVariant *result argument of these functions (where applicable) should be released using NPN_ReleaseVariantValue(). */ -typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp); +typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass); typedef void (*NPDeallocateFunctionPtr)(NPObject *npobj); typedef void (*NPInvalidateFunctionPtr)(NPObject *npobj); typedef bool (*NPHasMethodFunctionPtr)(NPObject *npobj, NPIdentifier name); diff --git a/mozilla/modules/plugin/base/src/ns4xPlugin.cpp b/mozilla/modules/plugin/base/src/ns4xPlugin.cpp index bdd4dabadfb..fe3a11f707c 100644 --- a/mozilla/modules/plugin/base/src/ns4xPlugin.cpp +++ b/mozilla/modules/plugin/base/src/ns4xPlugin.cpp @@ -1466,7 +1466,7 @@ _createobject(NPP npp, NPClass* aClass) NPObject *npobj; if (aClass->allocate) { - npobj = aClass->allocate(npp); + npobj = aClass->allocate(npp, aClass); } else { npobj = (NPObject *)PR_Malloc(sizeof(NPObject)); } diff --git a/mozilla/modules/plugin/base/src/nsJSNPRuntime.cpp b/mozilla/modules/plugin/base/src/nsJSNPRuntime.cpp index e640a8040f1..5af38839a6e 100644 --- a/mozilla/modules/plugin/base/src/nsJSNPRuntime.cpp +++ b/mozilla/modules/plugin/base/src/nsJSNPRuntime.cpp @@ -388,8 +388,11 @@ nsJSObjWrapper::~nsJSObjWrapper() // static NPObject * -nsJSObjWrapper::NP_Allocate(NPP npp) +nsJSObjWrapper::NP_Allocate(NPP npp, NPClass *aClass) { + NS_ASSERTION(aClass == &sJSObjWrapperNPClass, + "Huh, wrong class passed to NP_Allocate()!!!"); + return new nsJSObjWrapper(npp); } diff --git a/mozilla/modules/plugin/base/src/nsJSNPRuntime.h b/mozilla/modules/plugin/base/src/nsJSNPRuntime.h index 86e83209ae6..daa19a77673 100644 --- a/mozilla/modules/plugin/base/src/nsJSNPRuntime.h +++ b/mozilla/modules/plugin/base/src/nsJSNPRuntime.h @@ -73,7 +73,7 @@ protected: nsJSObjWrapper(NPP npp); ~nsJSObjWrapper(); - static NPObject * NP_Allocate(NPP npp); + static NPObject * NP_Allocate(NPP npp, NPClass *aClass); static void NP_Deallocate(NPObject *obj); static void NP_Invalidate(NPObject *obj); static bool NP_HasMethod(NPObject *, NPIdentifier identifier);