jsoncpp/0005-sync-Fix-c-20-compilation-problem-for-clang10.patch
2023-05-12 10:03:26 +08:00

34 lines
1.2 KiB
Diff

From 98361556e6ad47f4edb1f3615341ba4b6f3ff552 Mon Sep 17 00:00:00 2001
From: zhangzhangxin <zhangxin1@xfusion.com>
Date: Fri, 12 May 2023 09:52:03 +0800
Subject: [PATCH] sync:Fix c++20 compilation problem for clang10 and fix
potential bug due to compiler optimization
Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
---
include/json/allocator.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/include/json/allocator.h b/include/json/allocator.h
index 0f5c224..95ef8a5 100644
--- a/include/json/allocator.h
+++ b/include/json/allocator.h
@@ -35,11 +35,10 @@ public:
* Release memory which was allocated for N items at pointer P.
*
* The memory block is filled with zeroes before being released.
- * The pointer argument is tagged as "volatile" to prevent the
- * compiler optimizing out this critical step.
*/
- void deallocate(volatile pointer p, size_type n) {
- std::memset(p, 0, n * sizeof(T));
+ void deallocate(pointer p, size_type n) {
+ // memset_s is used because memset may be optimized away by the compiler
+ memset_s(p, n * sizeof(T), 0, n * sizeof(T));
// free using "global operator delete"
::operator delete(p);
}
--
2.40.0.windows.1