[Libreoffice-commits] core.git: Branch 'aoo/trunk' - jurt/source
Damjan Jovanovic
damjan at apache.org
Wed Nov 11 12:09:04 PST 2015
jurt/source/pipe/com_sun_star_lib_connections_pipe_PipeConnection.c | 18 +--
jurt/source/pipe/wrapper/wrapper.c | 51 ++--------
2 files changed, 23 insertions(+), 46 deletions(-)
New commits:
commit 81f02514035de84eb4851917db7aa9455672efb8
Author: Damjan Jovanovic <damjan at apache.org>
Date: Wed Nov 11 17:16:25 2015 +0000
r1712824 withdrawn by committer.
diff --git a/jurt/source/pipe/com_sun_star_lib_connections_pipe_PipeConnection.c b/jurt/source/pipe/com_sun_star_lib_connections_pipe_PipeConnection.c
index 5244c3e..fae40f9 100644
--- a/jurt/source/pipe/com_sun_star_lib_connections_pipe_PipeConnection.c
+++ b/jurt/source/pipe/com_sun_star_lib_connections_pipe_PipeConnection.c
@@ -25,15 +25,15 @@
#include "osl/security.h"
#include <osl/pipe.h>
-/* On Windows, jpipe.dll must not have static dependencies on any other URE DLLs
- (sal3.dll, uwinapi.dll), as Java System.LoadLibrary could otherwise not load
- it. Therefore, on Windows, this code goes into a jpipx.dll that the jpipe.dll
- wrapper loads with LoadLibraryEx(LOAD_WITH_ALTERED_SEARCH_PATH).
- The function names in this wrapped code are truncated from the long JNICALL
- names, as JNICALL causes some "@N" with different numeric values for
- N (and probably different across 32 and 64 bit) to be added to the symbol
- names, which the calls to GetProcAddress in wrapper/wrapper.c would otherwise
- have to take into account.
+/* On Windows, jpipe.dll must not have dependencies on any other URE DLLs, as
+ Java System.LoadLibrary could otherwise not load it. Therefore, on Windows,
+ this code goes into a jpipx.dll that the jpipe.dll wrapper loads with
+ LoadLibraryEx(LOAD_WITH_ALTERED_SEARCH_PATH). The function names in this
+ wrapped code are truncated from the long JNICALL names, as JNICALL causes
+ some "@N" with different numeric values for N (and probably different across
+ 32 and 64 bit) to be added to the symbol names, which the calls to
+ GetProcAddress in wrapper/wrapper.c would otheriwse have to take into
+ account.
*/
/*****************************************************************************/
diff --git a/jurt/source/pipe/wrapper/wrapper.c b/jurt/source/pipe/wrapper/wrapper.c
index 314cc18..59d51d1 100644
--- a/jurt/source/pipe/wrapper/wrapper.c
+++ b/jurt/source/pipe/wrapper/wrapper.c
@@ -30,50 +30,27 @@
#include "jni.h"
#include "sal/types.h"
+static HMODULE module;
-static HMODULE module = NULL;
-static HINSTANCE hInstDLL = NULL;
-static CRITICAL_SECTION CriticalSection;
-
-void InitWrapper(void) {
- #define MAXPATH 512
- wchar_t path[MAXPATH];
- DWORD size;
-
- size = GetModuleFileNameW(hInstDLL, path, MAXPATH);
- if (size == 0) {
- abort();
- }
- path[size - 5] = L'x'; /* ...\jpipe.dll -> ...\jpipx.dll */
- module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
- if (module == NULL) {
- abort();
- }
-}
-
-static FARPROC getFunction(char const * name)
-{
- {
- EnterCriticalSection(&CriticalSection);
-
- if(module == NULL)
- InitWrapper();
-
- LeaveCriticalSection(&CriticalSection);
- }
-
+static FARPROC getFunction(char const * name) {
return GetProcAddress(module, name);
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
(void) lpvReserved;
-
- if (fdwReason == DLL_PROCESS_ATTACH)
- {
- InitializeCriticalSection(&CriticalSection);
- hInstDLL = hinstDLL;
+ if (fdwReason == DLL_PROCESS_ATTACH) {
+ wchar_t path[32767];
+ DWORD size;
+ size = GetModuleFileNameW(hinstDLL, path, 32767);
+ if (size == 0) {
+ return FALSE;
+ }
+ path[size - 5] = L'x'; /* ...\jpipe.dll -> ...\jpipx.dll */
+ module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+ if (module == NULL) {
+ return FALSE;
+ }
}
-
return TRUE;
}
More information about the Libreoffice-commits
mailing list