Skip to content

Commit e8d944f

Browse files
authored
preparing patch release and fixing issue 722 (#723)
* preparing patch release and fixing issue 722 * lint
1 parent f509e21 commit e8d944f

File tree

9 files changed

+35
-13
lines changed

9 files changed

+35
-13
lines changed

.github/workflows/ubuntu-ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
run: |
2323
mkdir build
2424
cd build
25-
cmake -DCMAKE_INSTALL_PREFIX:PATH=destination -DENABLE_ROARING_TESTS=ON ..
25+
cmake -DCMAKE_INSTALL_PREFIX:PATH=destination -DENABLE_ROARING_TESTS=ON -DROARING_UNSAFE_FROZEN_TESTS=ON ..
2626
cmake --build .
2727
ctest . --output-on-failure
2828
cmake --install .
@@ -31,7 +31,7 @@ jobs:
3131
run: |
3232
mkdir builddebug
3333
cd builddebug
34-
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=destination -DENABLE_ROARING_TESTS=ON ..
34+
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=destination -DENABLE_ROARING_TESTS=ON -DROARING_UNSAFE_FROZEN_TESTS=ON ..
3535
cmake --build .
3636
ctest . --output-on-failure
3737
cmake --install .

.github/workflows/vs17-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- name: Configure
2222
run: |
2323
mkdir build
24-
cd build && cmake -DENABLE_ROARING_TESTS=ON -G "${{matrix.gen}}" -A ${{matrix.arch}} ..
24+
cd build && cmake -DENABLE_ROARING_TESTS=ON -DROARING_UNSAFE_FROZEN_TESTS=ON -G "${{matrix.gen}}" -A ${{matrix.arch}} ..
2525
- name: Build
2626
run: cmake --build build --config Release
2727
- name: Run basic tests

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ endif()
2020
set(ROARING_LIB_NAME roaring)
2121
set(PROJECT_VERSION_MAJOR 4)
2222
set(PROJECT_VERSION_MINOR 3)
23-
set(PROJECT_VERSION_PATCH 5)
24-
set(ROARING_LIB_VERSION "4.3.5" CACHE STRING "Roaring library version")
23+
set(PROJECT_VERSION_PATCH 6)
24+
set(ROARING_LIB_VERSION "4.3.6" CACHE STRING "Roaring library version")
2525
set(ROARING_LIB_SOVERSION "18" CACHE STRING "Roaring library soversion")
2626

2727
option(ROARING_EXCEPTIONS "Enable exception-throwing interface" ON)
@@ -48,6 +48,7 @@ option(ROARING_BUILD_C_TESTS_AS_CPP "Build test C files using C++ compilation" O
4848
option(ROARING_SANITIZE "Sanitize addresses" OFF)
4949
option(ROARING_SANITIZE_THREADS "Sanitize threads" OFF)
5050
option(ROARING_SANITIZE_UNDEFINED "Sanitize undefined behaviors" OFF)
51+
option(ROARING_UNSAFE_FROZEN_TESTS "If ON, tests some frozen functions which are unsafe as they include unaligned reads, this can cause crashes" OFF)
5152

5253
option(ENABLE_ROARING_TESTS "If OFF, disable unit tests altogether" ON)
5354
if(NOT ENABLE_ROARING_TESTS)

cpp/roaring/roaring64map.hh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,6 +1249,9 @@ class Roaring64Map {
12491249
});
12501250
}
12511251

1252+
/**
1253+
* For advanced users only.
1254+
*/
12521255
static const Roaring64Map frozenView(const char *buf) {
12531256
// size of bitmap buffer and key
12541257
const size_t metadata_size = sizeof(size_t) + sizeof(uint32_t);
@@ -1284,6 +1287,10 @@ class Roaring64Map {
12841287
return result;
12851288
}
12861289

1290+
/**
1291+
* For advanced users only. This function is unsafe in the sense that
1292+
* that it may trigger unaligned memory access. Use with caution.
1293+
*/
12871294
static const Roaring64Map portableDeserializeFrozen(const char *buf) {
12881295
Roaring64Map result;
12891296
// get map size

doxygen

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ PROJECT_NAME = "CRoaring"
4848
# could be handy for archiving the generated documentation or if some version
4949
# control system is used.
5050

51-
PROJECT_NUMBER = "4.3.5"
51+
PROJECT_NUMBER = "4.3.6"
5252

5353
# Using the PROJECT_BRIEF tag one can provide an optional one line description
5454
# for a project that appears at the top of each page and should give viewer a

include/roaring/roaring_version.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
// /include/roaring/roaring_version.h automatically generated by release.py, do not change by hand
33
#ifndef ROARING_INCLUDE_ROARING_VERSION
44
#define ROARING_INCLUDE_ROARING_VERSION
5-
#define ROARING_VERSION "4.3.5"
5+
#define ROARING_VERSION "4.3.6"
66
enum {
77
ROARING_VERSION_MAJOR = 4,
88
ROARING_VERSION_MINOR = 3,
9-
ROARING_VERSION_REVISION = 5
9+
ROARING_VERSION_REVISION = 6
1010
};
1111
#endif // ROARING_INCLUDE_ROARING_VERSION
1212
// clang-format on

tests/CMakeLists.txt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
### This code is buggy because it does not ensure that all variables have been defined :
2-
#set (TEST_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/testdata/")
3-
#configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
4-
# "${CMAKE_CURRENT_SOURCE_DIR}/config.h")
5-
61

2+
if(ROARING_UNSAFE_FROZEN_TESTS)
3+
add_compile_definitions(ROARING_UNSAFE_FROZEN_TESTS=1)
4+
endif()
75
add_cpp_test(cpp_unit)
86
add_cpp_test(cpp_random_unit)
97
add_cpp_test(cpp_example1)

tests/cpp_unit.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,6 +1476,9 @@ DEFINE_TEST(test_cpp_frozen_64) {
14761476
roaring_aligned_free(buf);
14771477
}
14781478

1479+
#if ROARING_UNSAFE_FROZEN_TESTS
1480+
// This test is unsafe, as it may trigger unaligned memory access
1481+
// It is only enabled if ROARING_UNSAFE_FROZEN_TESTS is defined.
14791482
DEFINE_TEST(test_cpp_frozen_portable) {
14801483
const uint64_t s = 65536;
14811484

@@ -1548,7 +1551,11 @@ DEFINE_TEST(test_cpp_frozen_portable) {
15481551

15491552
free(buf);
15501553
}
1554+
#endif // ROARING_UNSAFE_FROZEN_TESTS
15511555

1556+
#if ROARING_UNSAFE_FROZEN_TESTS
1557+
// This test is unsafe, as it may trigger unaligned memory access
1558+
// It is only enabled if ROARING_UNSAFE_FROZEN_TESTS is defined.
15521559
DEFINE_TEST(test_cpp_frozen_64_portable) {
15531560
const uint64_t s = 65536;
15541561

@@ -1611,6 +1618,7 @@ DEFINE_TEST(test_cpp_frozen_64_portable) {
16111618

16121619
free(buf);
16131620
}
1621+
#endif // ROARING_UNSAFE_FROZEN_TESTS
16141622

16151623
DEFINE_TEST(test_cpp_flip) {
16161624
{
@@ -2207,8 +2215,10 @@ int main() {
22072215
cmocka_unit_test(test_cpp_bidirectional_iterator_64),
22082216
cmocka_unit_test(test_cpp_frozen),
22092217
cmocka_unit_test(test_cpp_frozen_64),
2218+
#if ROARING_UNSAFE_FROZEN_TESTS
22102219
cmocka_unit_test(test_cpp_frozen_portable),
22112220
cmocka_unit_test(test_cpp_frozen_64_portable),
2221+
#endif // ROARING_UNSAFE_FROZEN_TESTS
22122222
cmocka_unit_test(test_cpp_flip),
22132223
cmocka_unit_test(test_cpp_flip_closed),
22142224
cmocka_unit_test(test_cpp_flip_64),

tests/toplevel_unit.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4562,6 +4562,9 @@ DEFINE_TEST(test_frozen_serialization_max_containers) {
45624562
frozen_serialization_compare(r);
45634563
}
45644564

4565+
#if ROARING_UNSAFE_FROZEN_TESTS
4566+
// This test is unsafe, as it may trigger unaligned memory access
4567+
// It is only enabled if ROARING_UNSAFE_FROZEN_TESTS is defined.
45654568
DEFINE_TEST(test_portable_deserialize_frozen) {
45664569
roaring_bitmap_t *r1 =
45674570
roaring_bitmap_from(1, 2, 3, 100, 1000, 10000, 1000000, 20000000);
@@ -4655,6 +4658,7 @@ DEFINE_TEST(test_portable_deserialize_frozen) {
46554658
roaring_bitmap_free(r2);
46564659
free(serialized);
46574660
}
4661+
#endif // ROARING_UNSAFE_FROZEN_TESTS
46584662

46594663
DEFINE_TEST(convert_to_bitset) {
46604664
roaring_bitmap_t *r1 = roaring_bitmap_create();
@@ -4981,7 +4985,9 @@ int main() {
49814985
#if !CROARING_IS_BIG_ENDIAN
49824986
cmocka_unit_test(test_frozen_serialization),
49834987
cmocka_unit_test(test_frozen_serialization_max_containers),
4988+
#if ROARING_UNSAFE_FROZEN_TESTS
49844989
cmocka_unit_test(test_portable_deserialize_frozen),
4990+
#endif // ROARING_UNSAFE_FROZEN_TESTS
49854991
cmocka_unit_test(issue_15jan2024),
49864992
#endif
49874993
};

0 commit comments

Comments
 (0)