Compare commits
10 Commits
1eadb6ee25
...
ab58083b0f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ab58083b0f | ||
|
|
1abda5b829 | ||
|
|
234638666e | ||
|
|
6772438f78 | ||
|
|
dac9c20a22 | ||
|
|
c586881d10 | ||
|
|
9161a3502b | ||
|
|
e5d3782487 | ||
|
|
1e043263e0 | ||
|
|
9d51aaeaf3 |
40
0002-sync-avoid-isprint-because-it-is-locale-specific.patch
Normal file
40
0002-sync-avoid-isprint-because-it-is-locale-specific.patch
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
From 08fec11ca29e0bce7d8cece6d2ab62d0604b2c9a Mon Sep 17 00:00:00 2001
|
||||||
|
From: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
Date: Fri, 28 Apr 2023 11:54:36 +0800
|
||||||
|
Subject: [PATCH] sync:avoid isprint, because it is locale specific
|
||||||
|
|
||||||
|
Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
---
|
||||||
|
src/lib_json/json_writer.cpp | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp
|
||||||
|
index 03a777f..8bf02db 100644
|
||||||
|
--- a/src/lib_json/json_writer.cpp
|
||||||
|
+++ b/src/lib_json/json_writer.cpp
|
||||||
|
@@ -175,11 +175,11 @@ String valueToString(double value, unsigned int precision,
|
||||||
|
|
||||||
|
String valueToString(bool value) { return value ? "true" : "false"; }
|
||||||
|
|
||||||
|
-static bool isAnyCharRequiredQuoting(char const* s, size_t n) {
|
||||||
|
+static bool doesAnyCharRequireEscaping(char const* s, size_t n) {
|
||||||
|
assert(s || !n);
|
||||||
|
|
||||||
|
return std::any_of(s, s + n, [](unsigned char c) {
|
||||||
|
- return c == '\\' || c == '"' || !std::isprint(c);
|
||||||
|
+ return c == '\\' || c == '"' || c < 0x20 || c > 0x7F;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -275,7 +275,7 @@ static String valueToQuotedStringN(const char* value, unsigned length,
|
||||||
|
if (value == nullptr)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
- if (!isAnyCharRequiredQuoting(value, length))
|
||||||
|
+ if (!doesAnyCharRequireEscaping(value, length))
|
||||||
|
return String("\"") + value + "\"";
|
||||||
|
// We have to walk value and escape any special characters.
|
||||||
|
// Appending to String is not efficient, but this should be rare.
|
||||||
|
--
|
||||||
|
2.40.0.windows.1
|
||||||
|
|
||||||
25
0003-sync-Add-nullptr-Json-Value-constructor.patch
Normal file
25
0003-sync-Add-nullptr-Json-Value-constructor.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 8009add0cae666b14677376269b2b2f810ede318 Mon Sep 17 00:00:00 2001
|
||||||
|
From: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
Date: Fri, 28 Apr 2023 15:49:46 +0800
|
||||||
|
Subject: [PATCH] sync:Add nullptr Json::Value constructor
|
||||||
|
|
||||||
|
Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
---
|
||||||
|
include/json/value.h | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/include/json/value.h b/include/json/value.h
|
||||||
|
index dffc51a..df1eba6 100644
|
||||||
|
--- a/include/json/value.h
|
||||||
|
+++ b/include/json/value.h
|
||||||
|
@@ -342,6 +342,7 @@ public:
|
||||||
|
Value(const StaticString& value);
|
||||||
|
Value(const String& value);
|
||||||
|
Value(bool value);
|
||||||
|
+ Value(std::nullptr_t ptr) = delete;
|
||||||
|
Value(const Value& other);
|
||||||
|
Value(Value&& other);
|
||||||
|
~Value();
|
||||||
|
--
|
||||||
|
2.40.0.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,99 @@
|
|||||||
|
From 85f6fdf884f45b08317b8d05ecf10fbf45563ea7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
Date: Fri, 28 Apr 2023 16:06:48 +0800
|
||||||
|
Subject: [PATCH] sync:Fix generation of pkg-config file with absolute
|
||||||
|
includedir/libdir
|
||||||
|
|
||||||
|
Signed-off-by: zhangzhangxin <zhangxin1@xfusion.com>
|
||||||
|
---
|
||||||
|
.gitignore | 1 -
|
||||||
|
CMakeLists.txt | 7 +++++++
|
||||||
|
cmake/JoinPaths.cmake | 23 +++++++++++++++++++++++
|
||||||
|
pkg-config/jsoncpp.pc.in | 4 ++--
|
||||||
|
4 files changed, 32 insertions(+), 3 deletions(-)
|
||||||
|
create mode 100644 cmake/JoinPaths.cmake
|
||||||
|
|
||||||
|
diff --git a/.gitignore b/.gitignore
|
||||||
|
index 91121c2..68f40b0 100644
|
||||||
|
--- a/.gitignore
|
||||||
|
+++ b/.gitignore
|
||||||
|
@@ -28,7 +28,6 @@
|
||||||
|
|
||||||
|
# CMake-generated files:
|
||||||
|
CMakeFiles/
|
||||||
|
-*.cmake
|
||||||
|
/pkg-config/jsoncpp.pc
|
||||||
|
jsoncpp_lib_static.dir/
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 01b8c9d..7e64bec 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -49,6 +49,8 @@ if(NOT DEFINED CMAKE_BUILD_TYPE AND NOT DEFINED CMAKE_CONFIGURATION_TYPES)
|
||||||
|
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Coverage.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||||
|
+
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# use ccache if found, has to be done before project()
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
@@ -146,6 +148,11 @@ if(JSONCPP_WITH_WARNING_AS_ERROR)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(JSONCPP_WITH_PKGCONFIG_SUPPORT)
|
||||||
|
+ include(JoinPaths)
|
||||||
|
+
|
||||||
|
+ join_paths(libdir_for_pc_file "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
+ join_paths(includedir_for_pc_file "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
+
|
||||||
|
configure_file(
|
||||||
|
"pkg-config/jsoncpp.pc.in"
|
||||||
|
"pkg-config/jsoncpp.pc"
|
||||||
|
diff --git a/cmake/JoinPaths.cmake b/cmake/JoinPaths.cmake
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..148f5b6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/cmake/JoinPaths.cmake
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+# This module provides a function for joining paths
|
||||||
|
+# known from most languages
|
||||||
|
+#
|
||||||
|
+# SPDX-License-Identifier: (MIT OR CC0-1.0)
|
||||||
|
+# Copyright 2020 Jan Tojnar
|
||||||
|
+# https://github.com/jtojnar/cmake-snips
|
||||||
|
+#
|
||||||
|
+# Modelled after Python’s os.path.join
|
||||||
|
+# https://docs.python.org/3.7/library/os.path.html#os.path.join
|
||||||
|
+# Windows not supported
|
||||||
|
+function(join_paths joined_path first_path_segment)
|
||||||
|
+ set(temp_path "${first_path_segment}")
|
||||||
|
+ foreach(current_segment IN LISTS ARGN)
|
||||||
|
+ if(NOT ("${current_segment}" STREQUAL ""))
|
||||||
|
+ if(IS_ABSOLUTE "${current_segment}")
|
||||||
|
+ set(temp_path "${current_segment}")
|
||||||
|
+ else()
|
||||||
|
+ set(temp_path "${temp_path}/${current_segment}")
|
||||||
|
+ endif()
|
||||||
|
+ endif()
|
||||||
|
+ endforeach()
|
||||||
|
+ set(${joined_path} "${temp_path}" PARENT_SCOPE)
|
||||||
|
+endfunction()
|
||||||
|
\ No newline at end of file
|
||||||
|
diff --git a/pkg-config/jsoncpp.pc.in b/pkg-config/jsoncpp.pc.in
|
||||||
|
index d4fa9ef..632a377 100644
|
||||||
|
--- a/pkg-config/jsoncpp.pc.in
|
||||||
|
+++ b/pkg-config/jsoncpp.pc.in
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||||
|
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
+libdir=@libdir_for_pc_file@
|
||||||
|
+includedir=@includedir_for_pc_file@
|
||||||
|
|
||||||
|
Name: jsoncpp
|
||||||
|
Description: A C++ library for interacting with JSON
|
||||||
|
--
|
||||||
|
2.40.0.windows.1
|
||||||
|
|
||||||
33
0005-sync-Fix-c-20-compilation-problem-for-clang10.patch
Normal file
33
0005-sync-Fix-c-20-compilation-problem-for-clang10.patch
Normal 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
|
||||||
|
|
||||||
20
jsoncpp.spec
20
jsoncpp.spec
@ -1,12 +1,16 @@
|
|||||||
Name: jsoncpp
|
Name: jsoncpp
|
||||||
Version: 1.9.3
|
Version: 1.9.3
|
||||||
Release: 3
|
Release: 7
|
||||||
Summary: JSON C++ library
|
Summary: JSON C++ library
|
||||||
License: Public Domain or MIT
|
License: Public Domain or MIT
|
||||||
URL: https://github.com/open-source-parsers/jsoncpp
|
URL: https://github.com/open-source-parsers/jsoncpp
|
||||||
Source0: https://github.com/open-source-parsers/jsoncpp/archive/%{version}/%{name}-%{version}.tar.gz
|
Source0: https://github.com/open-source-parsers/jsoncpp/archive/%{version}/%{name}-%{version}.tar.gz
|
||||||
BuildRequires: gcc-c++ cmake >= 3.1 python3-devel
|
BuildRequires: gcc-c++ cmake >= 3.1 python3-devel
|
||||||
Patch0: 0001-sync-Issue-1182-Fix-fuzzing-bug.patch
|
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
|
%description
|
||||||
JsonCpp is a C++ library that allows manipulating JSON values,
|
JsonCpp is a C++ library that allows manipulating JSON values,
|
||||||
@ -88,7 +92,19 @@ hardlink -cfv %{buildroot}%{_docdir}/%{name}
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Apr 28 2023 zhujunhao <zhujunhao5@huawei.com> - 1.9.3-3
|
* 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.
|
||||||
|
|
||||||
|
* Fri Apr 28 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-5
|
||||||
|
- Add nullptr Json::Value constructor
|
||||||
|
|
||||||
|
* Fri Apr 28 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-4
|
||||||
|
- avoid isprint, because it is locale specific
|
||||||
|
|
||||||
|
* Fri Apr 28 2023 zhangxin <zhangxin1@xfusion.com> - 1.9.3-3
|
||||||
- Issue 1182: Fix fuzzing bug
|
- Issue 1182: Fix fuzzing bug
|
||||||
|
|
||||||
* Thu Sep 24 2020 tianwei<tianwei12@huawei.com> - 1.9.3-2
|
* Thu Sep 24 2020 tianwei<tianwei12@huawei.com> - 1.9.3-2
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user