Skip to content

Commit aa7def1

Browse files
committed
Use instanceOf instead of splitting signature
1 parent aca1f2c commit aa7def1

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/Plugin.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,7 @@ Plugin::Plugin()
8686

8787
std::string className = arg_list[1].GetValue<std::string>();
8888
std::string methodName = arg_list[2].GetValue<std::string>();
89-
9089
std::string signature = arg_list[3].GetValue<std::string>();
91-
size_t spos = signature.find(")");
92-
std::string returnSignature = signature.substr(spos + 1, signature.length() - spos);
9390

9491
jobject* params = new jobject[arg_size - 4];
9592
for (int i = 4; i < arg_size; i++) {
@@ -165,14 +162,19 @@ Plugin::Plugin()
165162
}
166163

167164
if (returnValue != nullptr) {
168-
if (returnSignature.compare("I")) {
169-
Lua::ReturnValues(L, returnValue);
165+
if (jenv->IsInstanceOf(returnValue, jenv->FindClass("java/lang/Integer"))) {
166+
jclass cls = jenv->GetObjectClass(returnValue);
167+
jmethodID intValue = jenv->GetMethodID(cls, "intValue", "()I");
168+
jint result = jenv->CallIntMethod(returnValue, intValue);
169+
170+
Lua::ReturnValues(L, result);
170171
}
171172

172-
if (returnSignature.compare("Ljava.lang.String;")) {
173+
if (jenv->IsInstanceOf(returnValue, jenv->FindClass("java/lang/String"))) {
173174
const char* cstr = jenv->GetStringUTFChars((jstring)returnValue, NULL);
174175
std::string str = std::string(cstr);
175176
jenv->ReleaseStringUTFChars((jstring)returnValue, cstr);
177+
176178
Lua::ReturnValues(L, str);
177179
}
178180
}

0 commit comments

Comments
 (0)