summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2019-03-05 23:02:59 +0100
committerGitHub <noreply@github.com>2019-03-05 23:02:59 +0100
commit85eb381a0439a751f3b171bac510b8eb93045a38 (patch)
tree11811193ae3cbeaec84b7e083b9441d373d01c26
parent4ab4ff67ffb5bbf1ea0932c6a0b0353a77622bc3 (diff)
parent0e781aeacbf0f349c5b592b52b2175d5cc0581c6 (diff)
Merge pull request #26657 from marxin/fix-25641-ubsan-negative-value
Fix #25641 by not shifting a negative value.
-rw-r--r--servers/visual/visual_server_viewport.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/servers/visual/visual_server_viewport.h b/servers/visual/visual_server_viewport.h
index 4e3015c020..5176551540 100644
--- a/servers/visual/visual_server_viewport.h
+++ b/servers/visual/visual_server_viewport.h
@@ -90,7 +90,8 @@ public:
}
CanvasKey(const RID &p_canvas, int p_layer, int p_sublayer) {
canvas = p_canvas;
- stacking = ((int64_t)p_layer << 32) + p_sublayer;
+ int64_t sign = p_layer < 0 ? -1 : 1;
+ stacking = sign * (((int64_t)ABS(p_layer)) << 32) + p_sublayer;
}
int get_layer() const { return stacking >> 32; }
};