From e59ded1209f5768a96a3dae453ce6290269656c2 Mon Sep 17 00:00:00 2001 From: "mhammond%skippinet.com.au" Date: Fri, 27 Jan 2006 11:29:15 +0000 Subject: [PATCH] Reinstate the dlopen(PYTHON_SO,RTLD_NOW | RTLD_GLOBAL); git-svn-id: svn://10.0.0.236/trunk@188332 18797224-902f-48f8-a5cc-f745e15eee43 --- .../python/xpcom/src/loader/pyloader.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mozilla/extensions/python/xpcom/src/loader/pyloader.cpp b/mozilla/extensions/python/xpcom/src/loader/pyloader.cpp index baf8253d043..964758a53db 100644 --- a/mozilla/extensions/python/xpcom/src/loader/pyloader.cpp +++ b/mozilla/extensions/python/xpcom/src/loader/pyloader.cpp @@ -178,6 +178,22 @@ extern "C" NS_EXPORT nsresult NSGetModule(nsIComponentManager *servMgr, nsIFile* location, nsIModule** result) { +#if defined(XP_UNIX) && !defined(XP_MACOSX) + /* *sob* - seems necessary to open the .so as RTLD_GLOBAL. Without + this we see: + Traceback (most recent call last): + File "", line 1, in ? + File "/usr/lib/python2.4/logging/__init__.py", line 29, in ? + import sys, os, types, time, string, cStringIO, traceback + ImportError: /usr/lib/python2.4/lib-dynload/time.so: undefined + symbol: PyExc_IOError + + On osx, ShaneC writes that is it unnecessary (and fails anyway since + PYTHON_SO is wrong.) More clues about this welcome! + */ + + dlopen(PYTHON_SO,RTLD_NOW | RTLD_GLOBAL); +#endif PRBool bDidInitPython = !Py_IsInitialized(); // well, I will next line, anyway :-) if (bDidInitPython) { NS_TIMELINE_START_TIMER("PyXPCOM: Python initializing");