From 6f397a5123f5c3ca76adde672dffd5876a98c8c8 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sun, 11 Nov 2012 19:41:00 +0000 Subject: [PATCH] 2012-11-11 20:39 UTC+0100 Viktor Szakats (harbour syenar.net) * extras/hbdroid/msginfo.c ! fixed to pass strings to Java in UTF-8 ! additional NULL checks to avoid GPFs ; Anybody remembers how to run/try this thing? --- harbour/ChangeLog | 6 ++++++ harbour/extras/hbdroid/msginfo.c | 19 +++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 540838100f..f831c7192e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,12 @@ The license applies to all entries newer than 2009-04-28. */ +2012-11-11 20:39 UTC+0100 Viktor Szakats (harbour syenar.net) + * extras/hbdroid/msginfo.c + ! fixed to pass strings to Java in UTF-8 + ! additional NULL checks to avoid GPFs + ; Anybody remembers how to run/try this thing? + 2012-11-11 11:18 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/*/doc/en/*.txt ! Changed: $FUNCNAME$ => $NAME$. diff --git a/harbour/extras/hbdroid/msginfo.c b/harbour/extras/hbdroid/msginfo.c index d1f1ddcbe7..731738be7b 100644 --- a/harbour/extras/hbdroid/msginfo.c +++ b/harbour/extras/hbdroid/msginfo.c @@ -3,6 +3,8 @@ */ #include "hbapi.h" +#include "hbapistr.h" + #include "hbdroid.h" HB_FUNC( JNI_MSGINFO ) @@ -10,9 +12,18 @@ HB_FUNC( JNI_MSGINFO ) JNIEnv * jni_env = __hbdroid_jni_env(); jobject jni_obj = __hbdroid_jni_obj(); - jclass cls = ( *jni_env )->GetObjectClass( jni_env, jni_obj ); - jmethodID mid = ( *jni_env )->GetMethodID( jni_env, cls, "MsgInfo", "(Ljava/lang/String;)V" ); + if( jni_env && jni_obj ) + { + jclass cls = ( *jni_env )->GetObjectClass( jni_env, jni_obj ); + jmethodID mid = ( *jni_env )->GetMethodID( jni_env, cls, "MsgInfo", "(Ljava/lang/String;)V" ); - if( mid ) - ( *jni_env )->CallVoidMethod( jni_env, jni_obj, mid, ( *jni_env )->NewStringUTF( jni_env, hb_parcx( 1 ) ) ); + if( cls && mid ) + { + void * hPar1; + + ( *jni_env )->CallVoidMethod( jni_env, jni_obj, mid, ( *jni_env )->NewStringUTF( jni_env, hb_parstr_utf8( 1, &hPar1, NULL ) ) ); + + hb_strfree( hPar1 ); + } + } }