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

Commit dcb1e3b9 authored by Jiyong Park's avatar Jiyong Park
Browse files

Explicit cast from android::Base::Errno to status_t

Previously, Result<T>.error().code() returned int and this was
convertible to status_t which is an alias of int.

However, this actually was type unsafe because the return type of
error().code() was actually mean to be that of errno. errno and
status_t are both int, but their meanings are very different.

To handle such problems, Result<T>.error().code() now returns
android::base::Errno which is a wrapper to errno, but not to other
int-based types like status_t and StatusCode.

Eventually, Result<T> used here should be changed into Result<T,
StatusT> where StatusT is a type-safe wrapper class to status_t that
implements the contract to be used as the error type in
android::base::Result.

Unfortunately, since the use of Result<T> is so wide spread, in this
change, I aim to only fix the build error in this CL.

Bug: 209929099
Test: m
Change-Id: Ic10ab8ed52f6827ba3ac6fb7d6e031585827562f
parent db051569
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1585,7 +1585,7 @@ static jobject nativeCreateInputChannel(JNIEnv* env, jclass /* clazz */, jlong p

    if (!inputChannel.ok()) {
        std::string message = inputChannel.error().message();
        message += StringPrintf(" Status=%d", inputChannel.error().code());
        message += StringPrintf(" Status=%d", static_cast<int>(inputChannel.error().code()));
        jniThrowRuntimeException(env, message.c_str());
        return nullptr;
    }
@@ -1619,7 +1619,7 @@ static jobject nativeCreateInputMonitor(JNIEnv* env, jclass /* clazz */, jlong p

    if (!inputChannel.ok()) {
        std::string message = inputChannel.error().message();
        message += StringPrintf(" Status=%d", inputChannel.error().code());
        message += StringPrintf(" Status=%d", static_cast<int>(inputChannel.error().code()));
        jniThrowRuntimeException(env, message.c_str());
        return nullptr;
    }