Skip to content

Commit 73f7198

Browse files
authored
[0.6] [MOD-11651] Fix wrong template type deduction in GenerateAndAddVector (#789)
* [MOD-11651] Fix wrong template type deduction in `GenerateAndAddVector` (#785) Prevent template deduction errors in GenerateAndAddVector by making data_t parameter non-deducible Used std::type_identity<data_t>::type for the value parameter to force explicit template specification (e.g., GenerateAndAddVector<double>()) instead of allowing compiler to incorrectly deduce int from literal values, which caused buffer overflows when index expected different data types. (cherry picked from commit 961d6eb) * Upgrade unit tests C++ standard to C++20
1 parent c10d1dc commit 73f7198

File tree

4 files changed

+6
-4
lines changed

4 files changed

+6
-4
lines changed

tests/benchmark/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ message("# VectorSimilarity_Benchmark binroot: " ${binroot})
44

55
project(VectorSimilarity_Benchmark)
66

7-
set(CMAKE_CXX_STANDARD 14)
7+
set(CMAKE_CXX_STANDARD 20)
88

99
set(CMAKE_CXX_FLAGS_DEBUG "-g")
1010
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

tests/unit/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ project(VectorSimilarity_UnitTest)
1111

1212
include(CTest)
1313

14-
set(CMAKE_CXX_STANDARD 14)
14+
set(CMAKE_CXX_STANDARD 20)
1515

1616
set(CMAKE_CXX_FLAGS_DEBUG "-g")
1717
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

tests/unit/test_bruteforce_multi.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1280,7 +1280,7 @@ TYPED_TEST(BruteForceMultiTest, rangeQuery) {
12801280
GenerateAndAddVector<TEST_DATA_T>(index, dim, i, i);
12811281
// Add some vectors, worst than the second loop (for the given query)
12821282
for (size_t j = 0; j < per_label - 1; j++)
1283-
GenerateAndAddVector(index, dim, i, (TEST_DATA_T)i + n);
1283+
GenerateAndAddVector<TEST_DATA_T>(index, dim, i, (TEST_DATA_T)i + n);
12841284
}
12851285

12861286
ASSERT_EQ(VecSimIndex_IndexSize(index), n);

tests/unit/test_utils.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@ static void GenerateVector(data_t *output, size_t dim, data_t value = 1.0) {
3434
}
3535
}
3636

37+
// use std::type_identity to force explicit template specification.
3738
template <typename data_t>
38-
int GenerateAndAddVector(VecSimIndex *index, size_t dim, size_t id, data_t value = 1.0) {
39+
int GenerateAndAddVector(VecSimIndex *index, size_t dim, size_t id,
40+
typename std::type_identity<data_t>::type value = 1.0) {
3941
data_t v[dim];
4042
GenerateVector(v, dim, value);
4143
return VecSimIndex_AddVector(index, v, id);

0 commit comments

Comments
 (0)