diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index e382ef6..e77f3df 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -16,6 +16,10 @@ Bugs + + 2819445 + SafeArray.fromLongArray fails when using VariantLongInt (M3) + 2847577 SafeArray#setString(*) incorrectly handles unicode strings (M3) diff --git a/jni/SafeArray.cpp b/jni/SafeArray.cpp index 4fa0c65..29077a3 100644 --- a/jni/SafeArray.cpp +++ b/jni/SafeArray.cpp @@ -483,7 +483,8 @@ JNIEXPORT void JNICALL Java_com_jacob_com_SafeArray_fromLongArray } else if (vt == VT_I8) { void *pData; SafeArrayAccessData(psa, &pData); - memcpy(pData, arrayElements, len*sizeof(long)); + // VT_I8 is actually a LONGLONG and not a long in length SF 2819445 + memcpy(pData, arrayElements, len*sizeof(LONGLONG)); SafeArrayUnaccessData(psa); } else { ThrowComFail(env, "safearray cannot be assigned from long", -1); diff --git a/unittest/com/jacob/test/safearray/SafeArrayBasicTest.java b/unittest/com/jacob/test/safearray/SafeArrayBasicTest.java index 1d4fe10..a41f220 100644 Binary files a/unittest/com/jacob/test/safearray/SafeArrayBasicTest.java and b/unittest/com/jacob/test/safearray/SafeArrayBasicTest.java differ