Bug 349662 - Bug with 8, 16 and 32-bit unsigned integer parameters on Mac/PPC. Patch by vkorenev, r=jhpedemonte, a=mconnor. XULRunner only.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@213076 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2006-10-03 19:43:09 +00:00
parent 75087bbfa7
commit 89e41f56f8

View File

@@ -354,7 +354,11 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut,
{
LOG(("short\n"));
if (!aIsOut && !aIsArrayElement) { // 'in'
aVariant.val.i16 = env->CallShortMethod(aParam, shortValueMID);
jshort value = env->CallShortMethod(aParam, shortValueMID);
if (aType == nsXPTType::T_I16)
aVariant.val.i16 = value;
else
aVariant.val.u8 = value;
} else { // 'inout' & 'array'
jshort value;
if (aParam) {
@@ -363,7 +367,10 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut,
if (aIsOut) { // 'inout'
if (aParam) {
aVariant.val.i16 = value;
if (aType == nsXPTType::T_I16)
aVariant.val.i16 = value;
else
aVariant.val.u8 = value;
aVariant.ptr = &aVariant.val;
} else {
aVariant.ptr = nsnull;
@@ -384,7 +391,11 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut,
{
LOG(("int\n"));
if (!aIsOut && !aIsArrayElement) { // 'in'
aVariant.val.i32 = env->CallIntMethod(aParam, intValueMID);
jint value = env->CallIntMethod(aParam, intValueMID);
if (aType == nsXPTType::T_I32)
aVariant.val.i32 = value;
else
aVariant.val.u16 = value;
} else { // 'inout' & 'array'
jint value;
if (aParam) {
@@ -393,7 +404,10 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut,
if (aIsOut) { // 'inout'
if (aParam) {
aVariant.val.i32 = value;
if (aType == nsXPTType::T_I32)
aVariant.val.i32 = value;
else
aVariant.val.u16 = value;
aVariant.ptr = &aVariant.val;
} else {
aVariant.ptr = nsnull;
@@ -414,7 +428,11 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut,
{
LOG(("long\n"));
if (!aIsOut && !aIsArrayElement) { // 'in'
aVariant.val.i64 = env->CallLongMethod(aParam, longValueMID);
jlong value = env->CallLongMethod(aParam, longValueMID);
if (aType == nsXPTType::T_I64)
aVariant.val.i64 = value;
else
aVariant.val.u32 = value;
} else { // 'inout' & 'array'
jlong value;
if (aParam) {
@@ -423,7 +441,10 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut,
if (aIsOut) { // 'inout'
if (aParam) {
aVariant.val.i64 = value;
if (aType == nsXPTType::T_I64)
aVariant.val.i64 = value;
else
aVariant.val.u32 = value;
aVariant.ptr = &aVariant.val;
} else {
aVariant.ptr = nsnull;