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

Commit 054888fd authored by Ivan Lozano's avatar Ivan Lozano
Browse files

Fix sanitizer in setViewportAndProjection.

On integer sanitized builds calculating b (and possibly t) throws a
runtime error due to an unsigned integer overflow occuring.

 runtime error: unsigned integer overflow: 1024 - 1920 cannot be
 represented in type 'unsigned long'

This changes the type of b (and others) to int32_t, which matches the
types in Rect and can store the negative results above without
overflowing.

Bug: 30969751
Test: Compiles, surfaceflinger tests pass.
Change-Id: Ifb45e3c7e14a2f782412e65d56e462e7df37faba
Merged-In: Ifb45e3c7e14a2f782412e65d56e462e7df37faba
parent a9c7e6d1
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -166,12 +166,12 @@ void GLES20RenderEngine::setViewportAndProjection(
        size_t vpw, size_t vph, Rect sourceCrop, size_t hwh, bool yswap,
        Transform::orientation_flags rotation) {

    size_t l = sourceCrop.left;
    size_t r = sourceCrop.right;
    int32_t l = sourceCrop.left;
    int32_t r = sourceCrop.right;

    // In GL, (0, 0) is the bottom-left corner, so flip y coordinates
    size_t t = hwh - sourceCrop.top;
    size_t b = hwh - sourceCrop.bottom;
    int32_t t = hwh - sourceCrop.top;
    int32_t b = hwh - sourceCrop.bottom;

    mat4 m;
    if (yswap) {