summaryrefslogtreecommitdiffstatshomepage
path: root/unix/modjni.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-09-15 14:07:12 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-09-15 14:07:39 +0300
commitb230a86d332376d15b61636111ce47c90a5ab54a (patch)
tree275442c14e8dca1dccb955ce3639b229ababf4e7 /unix/modjni.c
parent5167332131e7fdf5cb3826e938178f072b5c5354 (diff)
downloadmicropython-b230a86d332376d15b61636111ce47c90a5ab54a.tar.gz
micropython-b230a86d332376d15b61636111ce47c90a5ab54a.zip
unix/modjni: Return any object type value as a jobject.
Diffstat (limited to 'unix/modjni.c')
-rw-r--r--unix/modjni.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/unix/modjni.c b/unix/modjni.c
index 542dfb8993..ddf7fb0fff 100644
--- a/unix/modjni.c
+++ b/unix/modjni.c
@@ -237,14 +237,22 @@ ret_string:;
ret = mp_obj_new_str(s, strlen(s), false);
JJ(ReleaseStringUTFChars, arg, s);
return ret;
- } else if (MATCH(jtypesig, "java.lang.Object")) {
- if (JJ(IsInstanceOf, arg, String_class)) {
- goto ret_string;
- } else {
- return new_jobject(arg);
+ } else {
+ while (*jtypesig != ' ' && *jtypesig) {
+ if (*jtypesig == '.') {
+ // Non-primitive, object type
+ if (JJ(IsInstanceOf, arg, String_class)) {
+ goto ret_string;
+ } else {
+ return new_jobject(arg);
+ }
+ }
+ jtypesig++;
}
}
+ printf("Unknown return type: %s\n", jtypesig);
+
return MP_OBJ_NULL;
}