diff -ruNp rxtx-2.1.7r2.orig/src/SerialImp.c rxtx-2.1.7r2/src/SerialImp.c --- rxtx-2.1.7r2.orig/src/SerialImp.c 2009-07-11 11:45:34.000000000 +0200 +++ rxtx-2.1.7r2/src/SerialImp.c 2009-07-11 20:24:29.000000000 +0200 @@ -1339,7 +1339,7 @@ int init_threads( struct event_info_stru report("init_threads: get eis\n"); jeis = (*eis->env)->GetFieldID( eis->env, eis->jclazz, "eis", "J" ); report("init_threads: set eis\n"); - (*eis->env)->SetIntField(eis->env, *eis->jobj, jeis, ( size_t ) eis ); + (*eis->env)->SetLongField(eis->env, *eis->jobj, jeis, ( size_t ) eis ); report("init_threads: stop\n"); report_time_end( ); return( 1 ); @@ -1532,7 +1532,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nati jobject jobj, jboolean interrupted ) { int fd = get_java_var( env, jobj,"fd","I" ); - struct event_info_struct *eis = ( struct event_info_struct * ) get_java_var( env, jobj, "eis", "J" ); + struct event_info_struct *eis = ( struct event_info_struct * ) get_java_var_long( env, jobj, "eis", "J" ); int result, count=0; char message[80]; @@ -2941,7 +2941,7 @@ int read_byte_array( JNIEnv *env, /* TRENT */ int flag, count = 0; struct event_info_struct *eis = ( struct event_info_struct * ) - get_java_var( env, *jobj,"eis","J" ); + get_java_var_long( env, *jobj,"eis","J" ); report_time_start(); flag = eis->eventflags[SPE_DATA_AVAILABLE]; @@ -4875,9 +4875,9 @@ get_java_var exceptions: none comments: ----------------------------------------------------------*/ -size_t get_java_var( JNIEnv *env, jobject jobj, char *id, char *type ) +long get_java_var_long( JNIEnv *env, jobject jobj, char *id, char *type ) { - int result = 0; + long result = 0; jclass jclazz = (*env)->GetObjectClass( env, jobj ); jfieldID jfd = (*env)->GetFieldID( env, jclazz, id, type ); @@ -4891,7 +4891,11 @@ size_t get_java_var( JNIEnv *env, jobjec LEAVE( "get_java_var" ); return result; } - result = (int)( (*env)->GetIntField( env, jobj, jfd ) ); + if ( !strcmp( type, "J" ) ) { + result = (long)( (*env)->GetLongField( env, jobj, jfd ) ); + } else { + result = (int) ( (*env)->GetIntField( env, jobj, jfd ) ); + } /* ct7 & gel * Added DeleteLocalRef */ (*env)->DeleteLocalRef( env, jclazz ); if(!strncmp( "fd",id,2) && result == 0) @@ -4902,6 +4906,10 @@ size_t get_java_var( JNIEnv *env, jobjec return result; } +int get_java_var( JNIEnv *env, jobject jobj, char *id, char *type ) { + return (int) get_java_var_long( env, jobj, id, type ); +} + /*---------------------------------------------------------- throw_java_exception diff -ruNp rxtx-2.1.7r2.orig/src/SerialImp.h rxtx-2.1.7r2/src/SerialImp.h --- rxtx-2.1.7r2.orig/src/SerialImp.h 2005-07-05 19:47:21.000000000 +0200 +++ rxtx-2.1.7r2/src/SerialImp.h 2009-07-11 20:19:51.000000000 +0200 @@ -413,7 +413,8 @@ int translate_parity( JNIEnv *, tcflag_t void system_wait(); void finalize_event_info_struct( struct event_info_struct * ); int read_byte_array( JNIEnv *, jobject *, int, unsigned char *, int, int ); -size_t get_java_var( JNIEnv *, jobject, char *, char * ); +int get_java_var( JNIEnv *, jobject, char *, char * ); +long get_java_var_long( JNIEnv *, jobject, char *, char * ); jboolean is_interrupted( struct event_info_struct * ); int send_event(struct event_info_struct *, jint, int ); void dump_termios(char *,struct termios *);