PatchSet 4895 Date: 2004/07/06 16:26:31 Author: guilhem Branch: HEAD Tag: (none) Log: JNI fixes. Win32 fixes for JNI.
* configure.ac: Assign JNICALL and JNIEXPORT for Win32 platforms. * kaffe/kaffevm/jni/jni-base.c, kaffe/kaffe/main.c, libraries/clib/native/System.c: Isolate string in userProperties from the initializing strings. So they can be freed at any times. Members: ChangeLog:1.2461->1.2462 configure:1.344->1.345 configure.ac:1.43->1.44 kaffe/kaffe/main.c:1.58->1.59 kaffe/kaffevm/jni/jni-base.c:1.3->1.4 libraries/clib/native/System.c:1.48->1.49 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.2461 kaffe/ChangeLog:1.2462 --- kaffe/ChangeLog:1.2461 Tue Jul 6 15:57:12 2004 +++ kaffe/ChangeLog Tue Jul 6 16:26:31 2004 @@ -1,3 +1,12 @@ +2004-07-06 Guilhem Lavaux <[EMAIL PROTECTED]> + + * configure.ac: Assign JNICALL and JNIEXPORT for Win32 platforms. + + * kaffe/kaffevm/jni/jni-base.c, + kaffe/kaffe/main.c, + libraries/clib/native/System.c: Isolate string in userProperties + from the initializing strings. So they can be freed at any times. + 2004-07-06 Dalibor Topic <[EMAIL PROTECTED]> * kaffe/kaffevm/jit/machine.c, Index: kaffe/configure diff -u kaffe/configure:1.344 kaffe/configure:1.345 --- kaffe/configure:1.344 Mon Jul 5 16:39:47 2004 +++ kaffe/configure Tue Jul 6 16:26:32 2004 @@ -54569,12 +54569,23 @@ + +case $Khost_os in +win32*) + jnicall_define="__stdcall" + jniexport_define="__declspec(dllexport)" + ;; +*) + jnicall_define="" + jniexport_define="" + ;; + cat >>confdefs.h <<_ACEOF -#define JNICALL +#define JNICALL $jnicall_define _ACEOF cat >>confdefs.h <<_ACEOF -#define JNIEXPORT +#define JNIEXPORT $jniexport_define _ACEOF Index: kaffe/configure.ac diff -u kaffe/configure.ac:1.43 kaffe/configure.ac:1.44 --- kaffe/configure.ac:1.43 Mon Jul 5 16:40:03 2004 +++ kaffe/configure.ac Tue Jul 6 16:26:40 2004 @@ -1911,8 +1911,19 @@ dnl Define JNI call. dnl ------------------------------------------------------------------------- -AC_DEFINE_UNQUOTED(JNICALL, []) -AC_DEFINE_UNQUOTED(JNIEXPORT, []) + +case $Khost_os in +win32*) + jnicall_define="__stdcall" + jniexport_define="__declspec(dllexport)" + ;; +*) + jnicall_define="" + jniexport_define="" + ;; + +AC_DEFINE_UNQUOTED(JNICALL, [$jnicall_define]) +AC_DEFINE_UNQUOTED(JNIEXPORT, [$jniexport_define]) dnl ------------------------------------------------------------------------- Index: kaffe/kaffe/kaffe/main.c diff -u kaffe/kaffe/kaffe/main.c:1.58 kaffe/kaffe/kaffe/main.c:1.59 --- kaffe/kaffe/kaffe/main.c:1.58 Mon Jul 5 16:40:18 2004 +++ kaffe/kaffe/kaffe/main.c Tue Jul 6 16:26:41 2004 @@ -674,19 +674,21 @@ #endif else if (argv[i][1] == 'D') { /* Set a property */ + const char *propStr = strdup(&argv[i][2]); + prop = malloc(sizeof(userProperty)); assert(prop != 0); prop->next = userProperties; userProperties = prop; - for (sz = 2; argv[i][sz] != 0; sz++) { - if (argv[i][sz] == '=') { - argv[i][sz] = 0; + for (sz = 0; propStr[sz] != 0; sz++) { + if (propStr[sz] == '=') { + propStr[sz] = 0; sz++; break; } } - prop->key = &argv[i][2]; - prop->value = &argv[i][sz]; + prop->key = propStr; + prop->value = &propStr[sz]; } else if (argv[i][1] == 'X') { fprintf(stderr, Index: kaffe/kaffe/kaffevm/jni/jni-base.c diff -u kaffe/kaffe/kaffevm/jni/jni-base.c:1.3 kaffe/kaffe/kaffevm/jni/jni-base.c:1.4 --- kaffe/kaffe/kaffevm/jni/jni-base.c:1.3 Tue Jul 6 13:17:23 2004 +++ kaffe/kaffe/kaffevm/jni/jni-base.c Tue Jul 6 16:26:42 2004 @@ -92,19 +92,21 @@ { userProperty *prop = (userProperty *)malloc(sizeof(userProperty)); int sz; + char *internalOpt = strdup(opt); + assert (prop != 0); prop->next = userProperties; userProperties = prop; - for (sz = 2; opt[sz] != 0; sz++) + for (sz = 2; internalOpt[sz] != 0; sz++) { - opt[sz] = 0; + internalOpt[sz] = 0; sz++; break; } - prop->key = &opt[2]; - prop->value = &opt[sz]; + prop->key = &internalOpt[2]; + prop->value = &internalOpt[sz]; } } Index: kaffe/libraries/clib/native/System.c diff -u kaffe/libraries/clib/native/System.c:1.48 kaffe/libraries/clib/native/System.c:1.49 --- kaffe/libraries/clib/native/System.c:1.48 Tue May 25 08:33:43 2004 +++ kaffe/libraries/clib/native/System.c Tue Jul 6 16:26:42 2004 @@ -368,6 +368,17 @@ setProperty(p, prop->key, prop->value); } + prop = userProperties; + while (prop != 0) { + userProperty *nextProperty = prop->next; + + free(prop->key); + free(prop->value); + free(prop); + prop = nextProperty; + } + userProperties = NULL; + return (p); } _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe