Skip to content

Commit 30170d6

Browse files
Christian LedergerberBillyDonahue
Christian Ledergerber
authored andcommitted
Fix c++20 compilation problem for clang10 and fix potential bug due to compiler optimization
1 parent 5f4e104 commit 30170d6

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

include/json/allocator.h

+3-4
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@ 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.
4038
*/
41-
void deallocate(volatile pointer p, size_type n) {
42-
std::memset(p, 0, n * sizeof(T));
39+
void deallocate(pointer p, size_type n) {
40+
// memset_s is used because memset may be optimized away by the compiler
41+
memset_s(p, n * sizeof(T), 0, n * sizeof(T));
4342
// free using "global operator delete"
4443
::operator delete(p);
4544
}

0 commit comments

Comments
 (0)