From dff35285e491d1905d38c90d83fed98932cbc3b3 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 7 Mar 2014 14:34:55 +0000 Subject: [PATCH] java: Use correct Set*Field JNI accessors to set fields of the appropriate type. Using the wrong accessors (somehow - I have no idea how) caused other fields in the struct to contain incorrect values. --- generator/java.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/generator/java.ml b/generator/java.ml index cce17580b..e9c594940 100644 --- a/generator/java.ml +++ b/generator/java.ml @@ -1146,13 +1146,13 @@ and generate_java_struct_return typ jtyp cols = pr " (*env)->SetLongField (env, jr, fl, r->%s);\n" name; | name, (FUInt32|FInt32) -> pr " fl = (*env)->GetFieldID (env, cl, \"%s\", \"I\");\n" name; - pr " (*env)->SetLongField (env, jr, fl, r->%s);\n" name; + pr " (*env)->SetIntField (env, jr, fl, r->%s);\n" name; | name, FOptPercent -> pr " fl = (*env)->GetFieldID (env, cl, \"%s\", \"F\");\n" name; pr " (*env)->SetFloatField (env, jr, fl, r->%s);\n" name; | name, FChar -> pr " fl = (*env)->GetFieldID (env, cl, \"%s\", \"C\");\n" name; - pr " (*env)->SetLongField (env, jr, fl, r->%s);\n" name; + pr " (*env)->SetCharField (env, jr, fl, r->%s);\n" name; ) cols; pr " free (r);\n"; pr " return jr;\n" @@ -1201,11 +1201,11 @@ and generate_java_struct_list_return typ jtyp cols = | FBytes|FUInt64|FInt64 -> pr " (*env)->SetLongField (env, jfl, fl, r->val[i].%s);\n" name; | FUInt32|FInt32 -> - pr " (*env)->SetLongField (env, jfl, fl, r->val[i].%s);\n" name; + pr " (*env)->SetIntField (env, jfl, fl, r->val[i].%s);\n" name; | FOptPercent -> pr " (*env)->SetFloatField (env, jfl, fl, r->val[i].%s);\n" name; | FChar -> - pr " (*env)->SetLongField (env, jfl, fl, r->val[i].%s);\n" name; + pr " (*env)->SetCharField (env, jfl, fl, r->val[i].%s);\n" name; ) cols; pr "\n"; pr " (*env)->SetObjectArrayElement (env, jr, i, jfl);\n";