Skip to content

Commit 3279095

Browse files
author
Christian Ledergerber
committed
Fix c++20 compilation problem for clang10
1 parent c60ebf7 commit 3279095

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

include/json/allocator.h

+5-4
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,12 @@ template <typename T> class SecureAllocator {
3535
* Release memory which was allocated for N items at pointer P.
3636
*
3737
* The memory block is filled with zeroes before being released.
38-
* The pointer argument is tagged as "volatile" to prevent the
39-
* compiler optimizing out this critical step.
38+
* The pointer argument passed to memset is tagged as "volatile" to prevent
39+
* the compiler optimizing out this critical step.
4040
*/
41-
void deallocate(volatile pointer p, size_type n) {
42-
std::memset(p, 0, n * sizeof(T));
41+
void deallocate(pointer p, size_type n) {
42+
volatile pointer do_not_optimize_memset_p = p;
43+
std::memset(do_not_optimize_memset_p, 0, n * sizeof(T));
4344
// free using "global operator delete"
4445
::operator delete(p);
4546
}

0 commit comments

Comments
 (0)