diff --git a/mozilla/modules/plugin/base/src/ns4xPluginInstance.cpp b/mozilla/modules/plugin/base/src/ns4xPluginInstance.cpp index 2fe6450b0fd..b065c7f4727 100644 --- a/mozilla/modules/plugin/base/src/ns4xPluginInstance.cpp +++ b/mozilla/modules/plugin/base/src/ns4xPluginInstance.cpp @@ -40,7 +40,7 @@ #include "prlog.h" #include "prmem.h" #include "nscore.h" - +#include "prenv.h" #include "ns4xPluginInstance.h" #include "ns4xPluginStreamListener.h" @@ -768,6 +768,40 @@ nsresult ns4xPluginInstance::InitializePlugin(nsIPluginInstancePeer* peer) peer->GetMode(&mode); peer->GetMIMEType(&mimetype); +#ifdef XP_UNIX + // hack swliveconnect argument for flash plugins on unix, + // because if it set flash corrupts the stack in NPP_NewProc call (bug 149336) + static const char flashMimeType[] = "application/x-shockwave-flash"; + static const char blockedParam[] = "swliveconnect"; + if (count && !PL_strcasecmp(mimetype, flashMimeType)) { + static int cachedDisableHack = 0; + if (!cachedDisableHack) { + if (PR_GetEnv("MOZILLA_PLUGIN_DISABLE_FLASH_SWLIVECONNECT_HACK")) + cachedDisableHack = -1; + else + cachedDisableHack = 1; + } + if (cachedDisableHack > 0) { + for (PRUint16 i=0; inewp, (char *)mimetype, &fNPP,