Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c0e7d69 authored by Hai Zhang's avatar Hai Zhang Committed by Automerger Merge Worker
Browse files

Merge "Only construct real Throwable objects in...

Merge "Only construct real Throwable objects in AndroidFuture.readThrowable()." into sc-dev am: af04dd2a am: 92414a05

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15302018

Change-Id: I269629173d5a291c3e4575b21255394cf9564b73
parents 4a87687f 92414a05
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.Looper;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;
import android.util.EventLog;
import android.util.Log;

import com.android.internal.annotations.GuardedBy;
@@ -601,9 +602,14 @@ public class AndroidFuture<T> extends CompletableFuture<T> implements Parcelable
        String messageWithStackTrace = message + '\n' + stackTrace;
        Throwable throwable;
        try {
            Class<?> clazz = Class.forName(className);
            Class<?> clazz = Class.forName(className, true, Parcelable.class.getClassLoader());
            if (Throwable.class.isAssignableFrom(clazz)) {
                Constructor<?> constructor = clazz.getConstructor(String.class);
                throwable = (Throwable) constructor.newInstance(messageWithStackTrace);
            } else {
                android.util.EventLog.writeEvent(0x534e4554, "186530450", -1, "");
                throwable = new RuntimeException(className + ": " + messageWithStackTrace);
            }
        } catch (Throwable t) {
            throwable = new RuntimeException(className + ": " + messageWithStackTrace);
            throwable.addSuppressed(t);