diff --git a/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp b/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp index 33cb62055b7..c9426003608 100644 --- a/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp +++ b/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp @@ -138,7 +138,7 @@ CreateJavaArray(JNIEnv* env, PRUint8 aType, PRUint32 aSize, const nsID& aIID, } case nsXPTType::T_VOID: - array = env->NewIntArray(aSize); + array = env->NewLongArray(aSize); break; default: @@ -227,7 +227,7 @@ GetNativeArrayElement(PRUint8 aType, void* aArray, PRUint32 aIndex, break; case nsXPTType::T_VOID: - aResult->val.u32 = NS_STATIC_CAST(PRUint32*, aArray)[aIndex]; + aResult->val.p = NS_STATIC_CAST(void**, aArray)[aIndex]; break; default: @@ -297,7 +297,7 @@ CreateNativeArray(PRUint8 aType, PRUint32 aSize, void** aResult) break; case nsXPTType::T_VOID: - array = PR_Malloc(aSize * sizeof(PRUint32)); + array = PR_Malloc(aSize * sizeof(void*)); break; default: @@ -850,16 +850,16 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut, break; } - // handle "void *" as an "int" in Java + // handle "void *" as an "long" in Java case nsXPTType::T_VOID: { - LOG(("int (void*)\n")); + LOG(("long (void*)\n")); if (!aIsOut && !aIsArrayElement) { // 'in' - aVariant.val.p = (void*) env->CallIntMethod(aParam, intValueMID); + aVariant.val.p = (void*) env->CallLongMethod(aParam, longValueMID); } else { // 'inout' & 'array' - jint value; + jlong value; if (aParam) { - env->GetIntArrayRegion((jintArray) aParam, aIndex, 1, &value); + env->GetLongArrayRegion((jlongArray) aParam, aIndex, 1, &value); } if (aIsOut) { // 'inout' @@ -871,7 +871,7 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut, } aVariant.SetPtrIsData(); } else { // 'array' - NS_STATIC_CAST(PRUint32*, aVariant.val.p)[aIndex] = value; + NS_STATIC_CAST(void**, aVariant.val.p)[aIndex] = (void*) value; } } break; @@ -1217,11 +1217,11 @@ FinalizeParams(JNIEnv *env, const nsXPTParamInfo &aParamInfo, PRUint8 aType, case nsXPTType::T_VOID: { if (NS_SUCCEEDED(aInvokeResult)) { - jint value = NS_REINTERPRET_CAST(jint, aVariant.val.p); + jlong value = NS_REINTERPRET_CAST(jlong, aVariant.val.p); if (aParamInfo.IsRetval() && !aIsArrayElement) { - *aParam = env->NewObject(intClass, intInitMID, value); + *aParam = env->NewObject(longClass, longInitMID, value); } else if ((aParamInfo.IsOut() || aIsArrayElement) && *aParam) { - env->SetIntArrayRegion((jintArray) *aParam, aIndex, 1, &value); + env->SetLongArrayRegion((jlongArray) *aParam, aIndex, 1, &value); } } break; @@ -1686,8 +1686,8 @@ GetXPCOMInstFromProxy(JNIEnv* env, jobject aJavaObject, void** aResult) if (!aResult) return NS_ERROR_NULL_POINTER; - long xpcom_obj = env->CallStaticLongMethod(xpcomJavaProxyClass, - getNativeXPCOMInstMID, aJavaObject); + jlong xpcom_obj = env->CallStaticLongMethod(xpcomJavaProxyClass, + getNativeXPCOMInstMID, aJavaObject); if (!xpcom_obj || env->ExceptionCheck()) { return NS_ERROR_FAILURE;