Merge "Guard against null mFunc in PooledLambdaImpl" into qt-dev
am: e64acbea8e
Change-Id: I5591cb8fc6eefae6c82e8d1dc705f422484bd3ea
This commit is contained in:
@@ -24,6 +24,7 @@ import android.util.Pools;
|
|||||||
|
|
||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
import com.android.internal.util.BitUtils;
|
import com.android.internal.util.BitUtils;
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
import com.android.internal.util.function.HeptConsumer;
|
import com.android.internal.util.function.HeptConsumer;
|
||||||
import com.android.internal.util.function.HeptFunction;
|
import com.android.internal.util.function.HeptFunction;
|
||||||
import com.android.internal.util.function.HeptPredicate;
|
import com.android.internal.util.function.HeptPredicate;
|
||||||
@@ -47,6 +48,7 @@ import com.android.internal.util.function.TriFunction;
|
|||||||
import com.android.internal.util.function.TriPredicate;
|
import com.android.internal.util.function.TriPredicate;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.BiPredicate;
|
import java.util.function.BiPredicate;
|
||||||
@@ -432,13 +434,15 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
|||||||
if (isConstSupplier()) {
|
if (isConstSupplier()) {
|
||||||
sb.append(getFuncTypeAsString()).append("(").append(doInvoke()).append(")");
|
sb.append(getFuncTypeAsString()).append("(").append(doInvoke()).append(")");
|
||||||
} else {
|
} else {
|
||||||
if (mFunc instanceof PooledLambdaImpl) {
|
Object func = mFunc;
|
||||||
sb.append(mFunc);
|
if (func instanceof PooledLambdaImpl) {
|
||||||
|
sb.append(func);
|
||||||
} else {
|
} else {
|
||||||
sb.append(getFuncTypeAsString()).append("@").append(hashCodeHex(mFunc));
|
sb.append(getFuncTypeAsString()).append("@").append(hashCodeHex(func));
|
||||||
}
|
}
|
||||||
sb.append("(");
|
sb.append("(");
|
||||||
sb.append(commaSeparateFirstN(mArgs, LambdaType.decodeArgCount(getFlags(MASK_FUNC_TYPE))));
|
sb.append(commaSeparateFirstN(mArgs,
|
||||||
|
LambdaType.decodeArgCount(getFlags(MASK_FUNC_TYPE))));
|
||||||
sb.append(")");
|
sb.append(")");
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
@@ -450,7 +454,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String hashCodeHex(Object o) {
|
private static String hashCodeHex(Object o) {
|
||||||
return Integer.toHexString(o.hashCode());
|
return Integer.toHexString(Objects.hashCode(o));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getFuncTypeAsString() {
|
private String getFuncTypeAsString() {
|
||||||
@@ -490,7 +494,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
|||||||
+ ", i = " + i
|
+ ", i = " + i
|
||||||
+ ")");
|
+ ")");
|
||||||
}
|
}
|
||||||
r.mFunc = func;
|
r.mFunc = Preconditions.checkNotNull(func);
|
||||||
r.setFlags(MASK_FUNC_TYPE, LambdaType.encode(fNumArgs, fReturnType));
|
r.setFlags(MASK_FUNC_TYPE, LambdaType.encode(fNumArgs, fReturnType));
|
||||||
r.setFlags(MASK_EXPOSED_AS, LambdaType.encode(numPlaceholders, fReturnType));
|
r.setFlags(MASK_EXPOSED_AS, LambdaType.encode(numPlaceholders, fReturnType));
|
||||||
if (ArrayUtils.size(r.mArgs) < fNumArgs) r.mArgs = new Object[fNumArgs];
|
if (ArrayUtils.size(r.mArgs) < fNumArgs) r.mArgs = new Object[fNumArgs];
|
||||||
|
|||||||
Reference in New Issue
Block a user