Merge "Omaha #4259 fix when java method expects string arg and gets java.lang.String instead of Py_String" into omaha_16.1.1

Former-commit-id: 842dfb0fa6e7a3cda122f14148a18b5cb83b5eee
This commit is contained in:
Nate Jensen 2015-04-01 21:34:47 -05:00 committed by Gerrit Code Review
commit 418d41e200

View file

@ -1565,9 +1565,23 @@ jvalue convert_pyarg_jvalue(JNIEnv *env,
char *val;
// none is okay, we'll set a null
if(param == Py_None)
if(param == Py_None) {
ret.l = NULL;
else {
} else if(pyjobject_check(param)) {
// if they pass in a pyjobject with java.lang.String inside it
jclass strClazz;
PyJobject_Object *obj = (PyJobject_Object*) param;
strClazz = (*env)->FindClass(env, "java/lang/String");
if(!(*env)->IsInstanceOf(env, obj->object, strClazz)) {
PyErr_Format(PyExc_TypeError,
"Expected string parameter at %i.",
pos + 1);
return ret;
}
ret.l = obj->object;
return ret;
} else {
// we could just convert it to a string...
if(!PyString_Check(param)) {
PyErr_Format(PyExc_TypeError,