diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2015-09-15 14:07:12 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2015-09-15 14:07:39 +0300 |
commit | b230a86d332376d15b61636111ce47c90a5ab54a (patch) | |
tree | 275442c14e8dca1dccb955ce3639b229ababf4e7 /unix | |
parent | 5167332131e7fdf5cb3826e938178f072b5c5354 (diff) | |
download | micropython-b230a86d332376d15b61636111ce47c90a5ab54a.tar.gz micropython-b230a86d332376d15b61636111ce47c90a5ab54a.zip |
unix/modjni: Return any object type value as a jobject.
Diffstat (limited to 'unix')
-rw-r--r-- | unix/modjni.c | 18 |
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; } |