gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash/plugin/mozilla-sdk np_entry.cpp


From: Dossy Shiobara
Subject: [Gnash-commit] gnash/plugin/mozilla-sdk np_entry.cpp
Date: Mon, 17 Mar 2008 15:22:18 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Dossy Shiobara <dossy>  08/03/17 15:22:18

Modified files:
        plugin/mozilla-sdk: np_entry.cpp 

Log message:
        Conditionally support older NPAPI versions by using a more
        fine-grained approach to copying the NPNetscapeFuncs structure.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/plugin/mozilla-sdk/np_entry.cpp?cvsroot=gnash&r1=1.10&r2=1.11

Patches:
Index: np_entry.cpp
===================================================================
RCS file: /sources/gnash/gnash/plugin/mozilla-sdk/np_entry.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- np_entry.cpp        15 Mar 2008 23:05:07 -0000      1.10
+++ np_entry.cpp        17 Mar 2008 15:22:17 -0000      1.11
@@ -80,46 +80,75 @@
 
 DSOEXPORT static NPError fillNetscapeFunctionTable(NPNetscapeFuncs* aNPNFuncs)
 {
+  int i = 0, n;
+
   if(aNPNFuncs == NULL)
     return NPERR_INVALID_FUNCTABLE_ERROR;
 
   if(HIBYTE(aNPNFuncs->version) > NP_VERSION_MAJOR)
     return NPERR_INCOMPATIBLE_VERSION_ERROR;
 
+#if 0
   if(aNPNFuncs->size < sizeof(NPNetscapeFuncs))
     return NPERR_INVALID_FUNCTABLE_ERROR;
+#endif
+
+  // Number of function pointers in aNPNFuncs.
+  n = (aNPNFuncs->size - (2 * sizeof(uint16))) / sizeof(void *);
 
   NPNFuncs.size             = aNPNFuncs->size;
   NPNFuncs.version          = aNPNFuncs->version;
-  NPNFuncs.geturlnotify     = aNPNFuncs->geturlnotify;
-  NPNFuncs.geturl           = aNPNFuncs->geturl;
-  NPNFuncs.posturlnotify    = aNPNFuncs->posturlnotify;
-  NPNFuncs.posturl          = aNPNFuncs->posturl;
-  NPNFuncs.requestread      = aNPNFuncs->requestread;
-  NPNFuncs.newstream        = aNPNFuncs->newstream;
-  NPNFuncs.write            = aNPNFuncs->write;
-  NPNFuncs.destroystream    = aNPNFuncs->destroystream;
-  NPNFuncs.status           = aNPNFuncs->status;
-  NPNFuncs.uagent           = aNPNFuncs->uagent;
-  NPNFuncs.memalloc         = aNPNFuncs->memalloc;
-  NPNFuncs.memfree          = aNPNFuncs->memfree;
-  NPNFuncs.memflush         = aNPNFuncs->memflush;
-  NPNFuncs.reloadplugins    = aNPNFuncs->reloadplugins;
-#ifdef OJI
-  NPNFuncs.getJavaEnv       = aNPNFuncs->getJavaEnv;
-  NPNFuncs.getJavaPeer      = aNPNFuncs->getJavaPeer;
-#endif
-  NPNFuncs.getvalue         = aNPNFuncs->getvalue;
-  NPNFuncs.setvalue         = aNPNFuncs->setvalue;
-  NPNFuncs.invalidaterect   = aNPNFuncs->invalidaterect;
-  NPNFuncs.invalidateregion = aNPNFuncs->invalidateregion;
-  NPNFuncs.forceredraw      = aNPNFuncs->forceredraw;
-
-// The following has been copied from a newer version of npn_gate.cpp
-
-  NPNFuncs.getstringidentifier     = aNPNFuncs->getstringidentifier;
-  NPNFuncs.getproperty             = aNPNFuncs->getproperty;
-  NPNFuncs.releaseobject           = aNPNFuncs->releaseobject;
+
+  /*
+   * BEWARE!  The following is order-sensitive and needs to be in the
+   * same order as the structure definition from npupp.h.
+   */
+
+  if (++i <= n) NPNFuncs.geturl = aNPNFuncs->geturl;
+  if (++i <= n) NPNFuncs.posturl = aNPNFuncs->posturl;
+  if (++i <= n) NPNFuncs.requestread = aNPNFuncs->requestread;
+  if (++i <= n) NPNFuncs.newstream = aNPNFuncs->newstream;
+  if (++i <= n) NPNFuncs.write = aNPNFuncs->write;
+  if (++i <= n) NPNFuncs.destroystream = aNPNFuncs->destroystream;
+  if (++i <= n) NPNFuncs.status = aNPNFuncs->status;
+  if (++i <= n) NPNFuncs.uagent = aNPNFuncs->uagent;
+  if (++i <= n) NPNFuncs.memalloc = aNPNFuncs->memalloc;
+  if (++i <= n) NPNFuncs.memfree = aNPNFuncs->memfree;
+  if (++i <= n) NPNFuncs.memflush = aNPNFuncs->memflush;
+  if (++i <= n) NPNFuncs.reloadplugins = aNPNFuncs->reloadplugins;
+  if (++i <= n) NPNFuncs.getJavaEnv = aNPNFuncs->getJavaEnv;
+  if (++i <= n) NPNFuncs.getJavaPeer = aNPNFuncs->getJavaPeer;
+  if (++i <= n) NPNFuncs.geturlnotify = aNPNFuncs->geturlnotify;
+  if (++i <= n) NPNFuncs.posturlnotify = aNPNFuncs->posturlnotify;
+  if (++i <= n) NPNFuncs.getvalue = aNPNFuncs->getvalue;
+  if (++i <= n) NPNFuncs.setvalue = aNPNFuncs->setvalue;
+  if (++i <= n) NPNFuncs.invalidaterect = aNPNFuncs->invalidaterect;
+  if (++i <= n) NPNFuncs.invalidateregion = aNPNFuncs->invalidateregion;
+  if (++i <= n) NPNFuncs.forceredraw = aNPNFuncs->forceredraw;
+  if (++i <= n) NPNFuncs.getstringidentifier = aNPNFuncs->getstringidentifier;
+  if (++i <= n) NPNFuncs.getstringidentifiers = 
aNPNFuncs->getstringidentifiers;
+  if (++i <= n) NPNFuncs.getintidentifier = aNPNFuncs->getintidentifier;
+  if (++i <= n) NPNFuncs.identifierisstring = aNPNFuncs->identifierisstring;
+  if (++i <= n) NPNFuncs.utf8fromidentifier = aNPNFuncs->utf8fromidentifier;
+  if (++i <= n) NPNFuncs.intfromidentifier = aNPNFuncs->intfromidentifier;
+  if (++i <= n) NPNFuncs.createobject = aNPNFuncs->createobject;
+  if (++i <= n) NPNFuncs.retainobject = aNPNFuncs->retainobject;
+  if (++i <= n) NPNFuncs.releaseobject = aNPNFuncs->releaseobject;
+  if (++i <= n) NPNFuncs.invoke = aNPNFuncs->invoke;
+  if (++i <= n) NPNFuncs.invokeDefault = aNPNFuncs->invokeDefault;
+  if (++i <= n) NPNFuncs.evaluate = aNPNFuncs->evaluate;
+  if (++i <= n) NPNFuncs.getproperty = aNPNFuncs->getproperty;
+  if (++i <= n) NPNFuncs.setproperty = aNPNFuncs->setproperty;
+  if (++i <= n) NPNFuncs.removeproperty = aNPNFuncs->removeproperty;
+  if (++i <= n) NPNFuncs.hasproperty = aNPNFuncs->hasproperty;
+  if (++i <= n) NPNFuncs.hasmethod = aNPNFuncs->hasmethod;
+  if (++i <= n) NPNFuncs.releasevariantvalue = aNPNFuncs->releasevariantvalue;
+  if (++i <= n) NPNFuncs.setexception = aNPNFuncs->setexception;
+  if (++i <= n) NPNFuncs.pushpopupsenabledstate = 
aNPNFuncs->pushpopupsenabledstate;
+  if (++i <= n) NPNFuncs.poppopupsenabledstate = 
aNPNFuncs->poppopupsenabledstate;
+  if (++i <= n) NPNFuncs.enumerate = aNPNFuncs->enumerate;
+  if (++i <= n) NPNFuncs.pluginthreadasynccall = 
aNPNFuncs->pluginthreadasynccall;
+  if (++i <= n) NPNFuncs.construct = aNPNFuncs->construct;
 
   return NPERR_NO_ERROR;
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]