!33 sync:Volatile is deprecated in C++20

From: @zhangzhangxin 
Reviewed-by: @Charlie_li 
Signed-off-by: @Charlie_li
This commit is contained in:
openeuler-ci-bot 2023-05-12 02:27:57 +00:00 committed by Gitee
commit ab58083b0f
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 38 additions and 1 deletions

View File

@ -0,0 +1,33 @@
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

View File

@ -1,6 +1,6 @@
Name: jsoncpp
Version: 1.9.3
Release: 6
Release: 7
Summary: JSON C++ library
License: Public Domain or MIT
URL: https://github.com/open-source-parsers/jsoncpp
@ -10,6 +10,7 @@ Patch0: 0001-sync-Issue-1182-Fix-fuzzing-bug.patch
Patch1: 0002-sync-avoid-isprint-because-it-is-locale-specific.patch
Patch2: 0003-sync-Add-nullptr-Json-Value-constructor.patch
Patch3: 0004-sync-Fix-generation-of-pkg-config-file-with-absolute.patch
Patch4: 0005-sync-Fix-c-20-compilation-problem-for-clang10.patch
%description
JsonCpp is a C++ library that allows manipulating JSON values,
@ -91,6 +92,9 @@ hardlink -cfv %{buildroot}%{_docdir}/%{name}
%changelog
* Fri May 12 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-7
- Fix c++20 compilation problem for clang10 and fix potential bug due to compiler optimization
* Fri Apr 28 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-6
- Fix generation of pkg-config file with absolute includedir/libdir.