Skip to content

Commit d90b733

Browse files
autophagybgeng777
authored andcommitted
[bugfix] Fix bug when converting from java.lang.Short to a python int (#101)
(cherry picked from commit 4192899)
1 parent 2bbde1c commit d90b733

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

‎src/main/c/pemja/core/pyutils.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ PyObject* JcpPyObject_FromJObject(JNIEnv* env, jobject value) {
315315
} else if ((*env)->IsSameObject(env, clazz, JBYTE_OBJ_TYPE)) {
316316
result = JcpPyInt_FromJByte(env, value);
317317
} else if ((*env)->IsSameObject(env, clazz, JSHORT_OBJ_TYPE)) {
318-
result = JcpPyInt_FromJShort(env, clazz);
318+
result = JcpPyInt_FromJShort(env, value);
319319
} else if ((*env)->IsSameObject(env, clazz, JBIGDECIMAL_TYPE)) {
320320
result = JcpPyDecimal_FromJBigDecimal(env, value);
321321
} else if ((*env)->IsSameObject(env, clazz, JBIGINTEGER_TYPE)) {

‎src/test/java/pemja/core/PythonInterpreterTest.java‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,12 @@ public void testSetAndGet() {
209209
a1[1] = new int[] {3, 4};
210210
interpreter.set("a1", a1);
211211
assertArrayEquals(a1, interpreter.get("a1", int[][].class));
212+
213+
Object[] b1 = new Object[] {Short.MIN_VALUE, Short.MAX_VALUE};
214+
interpreter.set("b1", b1);
215+
assertArrayEquals(
216+
new Object[] {(long) Short.MIN_VALUE, (long) Short.MAX_VALUE},
217+
interpreter.get("b1", Object[].class));
212218
}
213219
}
214220

@@ -340,6 +346,11 @@ public void testCallPythonWithAllTypes() throws Exception {
340346
arg11.put("pemja", 2L);
341347
assertEquals(arg11, interpreter.invoke("test_call.test_call_one_arg", arg11));
342348

349+
assertEquals(
350+
(long) Short.MAX_VALUE,
351+
interpreter.invoke(
352+
"test_call.test_call_variable_args", Short.MAX_VALUE, Short.MIN_VALUE));
353+
343354
PyIterator iterators =
344355
(PyIterator) interpreter.invoke("test_call.test_return_generator", 3);
345356
Object[] expected = new Object[] {0L, 1L, 2L, "haha", null};

0 commit comments

Comments
 (0)