From 487b1ff68a99cc1b832edd8c35acc28dea491334 Mon Sep 17 00:00:00 2001 From: Nate Jensen Date: Wed, 1 Apr 2015 12:09:15 -0500 Subject: [PATCH] Omaha #4259 fix when java method expects string arg and gets java.lang.String instead of Py_String Change-Id: Ic65c49fcf3b9ef051b0c36d12b00e02183eeba2f Former-commit-id: 452379894eec349ba6d1b901073b1f2746c08e94 --- .../rary.cots.jepp/jepp-2.3/src/jep/util.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/nativeLib/rary.cots.jepp/jepp-2.3/src/jep/util.c b/nativeLib/rary.cots.jepp/jepp-2.3/src/jep/util.c index 950fcb2b65..988b93227a 100644 --- a/nativeLib/rary.cots.jepp/jepp-2.3/src/jep/util.c +++ b/nativeLib/rary.cots.jepp/jepp-2.3/src/jep/util.c @@ -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,