Kaydet (Commit) 66974e68 authored tarafından Tor Lillqvist's avatar Tor Lillqvist Kaydeden (comit) Tomaž Vajngerl

Don't keep the LibreOfficeKit pointer in a global variable

It is invalid in case lo_destroy() has been called.

Change-Id: I45533b66d32fc650e48748da8ea1d2f2aaa381e0
üst 13e6637e
...@@ -40,7 +40,7 @@ extern void Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, ...@@ -40,7 +40,7 @@ extern void Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env,
extern LibreOfficeKit* libreofficekit_hook(const char* install_path); extern LibreOfficeKit* libreofficekit_hook(const char* install_path);
static LibreOfficeKit* gpOffice; static char *full_program_dir = NULL;
/// Call the same method from Bootstrap. /// Call the same method from Bootstrap.
__attribute__ ((visibility("default"))) __attribute__ ((visibility("default")))
...@@ -73,7 +73,6 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative ...@@ -73,7 +73,6 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative
const char program_dir[] = "/program"; const char program_dir[] = "/program";
size_t data_dir_len; size_t data_dir_len;
char *full_program_dir;
(void) clazz; (void) clazz;
...@@ -128,6 +127,7 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative ...@@ -128,6 +127,7 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative
extract_files(UNPACK_TREE_GZ, UNPACK_TREE_GZ, 1); extract_files(UNPACK_TREE_GZ, UNPACK_TREE_GZ, 1);
// LibreOfficeKit expects a path to the program/ directory // LibreOfficeKit expects a path to the program/ directory
free(full_program_dir);
data_dir_len = strlen(data_dir); data_dir_len = strlen(data_dir);
full_program_dir = malloc(data_dir_len + sizeof(program_dir)); full_program_dir = malloc(data_dir_len + sizeof(program_dir));
...@@ -135,10 +135,7 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative ...@@ -135,10 +135,7 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative
strncpy(full_program_dir + data_dir_len, program_dir, sizeof(program_dir)); strncpy(full_program_dir + data_dir_len, program_dir, sizeof(program_dir));
// Initialize LibreOfficeKit // Initialize LibreOfficeKit
gpOffice = libreofficekit_hook(full_program_dir); if (!libreofficekit_hook(full_program_dir))
free(full_program_dir);
if (!gpOffice)
{ {
LOGE("libreofficekit_hook returned null"); LOGE("libreofficekit_hook returned null");
return JNI_FALSE; return JNI_FALSE;
...@@ -156,7 +153,7 @@ jlong Java_org_libreoffice_kit_LibreOfficeKit_getLibreOfficeKitHandle ...@@ -156,7 +153,7 @@ jlong Java_org_libreoffice_kit_LibreOfficeKit_getLibreOfficeKitHandle
(void) env; (void) env;
(void) clazz; (void) clazz;
return (jlong) (intptr_t) gpOffice; return (jlong) (intptr_t) libreofficekit_hook(full_program_dir);
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment