From b46844a30b751e6abd5eef59d60f99d5ca3844aa Mon Sep 17 00:00:00 2001 From: "Harry T. Vennik" Date: Fri, 12 Feb 2021 13:38:24 +0100 Subject: [PATCH] Fix Issue 21631 - cas: add 'const' attribute to local variable 'arg1' --- src/core/atomic.d | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/core/atomic.d b/src/core/atomic.d index e6a82e58f8..4af3fdf2bd 100644 --- a/src/core/atomic.d +++ b/src/core/atomic.d @@ -292,7 +292,7 @@ template cas(MemoryOrder succ = MemoryOrder.seq, MemoryOrder fail = MemoryOrder. in (atomicPtrIsProperlyAligned(here), "Argument `here` is not properly aligned") { // resolve implicit conversions - T arg1 = ifThis; + const T arg1 = ifThis; T arg2 = writeThis; static if (__traits(isFloating, T)) @@ -1276,4 +1276,13 @@ version (CoreUnittest) shared NoIndirections n; static assert(is(typeof(atomicLoad(n)) == NoIndirections)); } + + unittest // Issue 21631 + { + shared uint si1 = 45; + shared uint si2 = 38; + shared uint* psi = &si1; + + assert((&psi).cas(cast(const) psi, &si2)); + } }