Skip to content

Commit 30a490b

Browse files
committed
Fix: Misc warnings & compilation issues
1 parent 5ccff2f commit 30a490b

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

include/usearch/index_dense.hpp

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -560,8 +560,6 @@ class index_dense_gt {
560560
index_dense_config_t config = {}, //
561561
vector_key_t free_key = default_free_value<vector_key_t>()) {
562562

563-
if (metric.dimensions() == 0)
564-
return state_result_t{}.failed("Zero-dimensional vectors are not supported!");
565563
if (!metric)
566564
return state_result_t{}.failed("Metric uninitialized!");
567565
error_t error = config.validate();
@@ -780,9 +778,8 @@ class index_dense_gt {
780778
cluster_config.thread = lock.thread_id;
781779
cluster_config.expansion = config_.expansion_search;
782780
metric_proxy_t metric{*this};
783-
auto allow = [free_key_ = this->free_key_](member_cref_t const& member) noexcept {
784-
return member.key != free_key_;
785-
};
781+
vector_key_t free_key_copy = free_key_;
782+
auto allow = [free_key_copy](member_cref_t const& member) noexcept { return member.key != free_key_copy; };
786783

787784
// Find the closest cluster for any vector under that key.
788785
while (key_range.first != key_range.second) {
@@ -1915,14 +1912,13 @@ class index_dense_gt {
19151912
search_config.expansion = config_.expansion_search;
19161913
search_config.exact = exact;
19171914

1915+
vector_key_t free_key_copy = free_key_;
19181916
if (std::is_same<typename std::decay<predicate_at>::type, dummy_predicate_t>::value) {
1919-
auto allow = [free_key_ = this->free_key_](member_cref_t const& member) noexcept {
1920-
return member.key != free_key_;
1921-
};
1917+
auto allow = [free_key_copy](member_cref_t const& member) noexcept { return member.key != free_key_copy; };
19221918
return typed_->search(vector_data, wanted, metric_proxy_t{*this}, search_config, allow);
19231919
} else {
1924-
auto allow = [free_key_ = this->free_key_, &predicate](member_cref_t const& member) noexcept {
1925-
return member.key != free_key_ && predicate(member.key);
1920+
auto allow = [free_key_copy, &predicate](member_cref_t const& member) noexcept {
1921+
return member.key != free_key_copy && predicate(member.key);
19261922
};
19271923
return typed_->search(vector_data, wanted, metric_proxy_t{*this}, search_config, allow);
19281924
}
@@ -1947,9 +1943,8 @@ class index_dense_gt {
19471943
cluster_config.thread = lock.thread_id;
19481944
cluster_config.expansion = config_.expansion_search;
19491945

1950-
auto allow = [free_key_ = this->free_key_](member_cref_t const& member) noexcept {
1951-
return member.key != free_key_;
1952-
};
1946+
vector_key_t free_key_copy = free_key_;
1947+
auto allow = [free_key_copy](member_cref_t const& member) noexcept { return member.key != free_key_copy; };
19531948
return typed_->cluster(vector_data, level, metric_proxy_t{*this}, cluster_config, allow);
19541949
}
19551950

include/usearch/index_plugins.hpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,9 @@ class aligned_allocator_gt {
569569
using size_type = std::size_t;
570570
using pointer = element_at*;
571571
using const_pointer = element_at const*;
572-
template <typename other_element_at> struct rebind { using other = aligned_allocator_gt<other_element_at>; };
572+
template <typename other_element_at> struct rebind {
573+
using other = aligned_allocator_gt<other_element_at>;
574+
};
573575

574576
constexpr std::size_t alignment() const { return alignment_ak; }
575577

@@ -579,11 +581,14 @@ class aligned_allocator_gt {
579581
if (length > length_bytes)
580582
return nullptr;
581583
std::size_t alignment = alignment_ak;
582-
// void* result = nullptr;
583-
// int status = posix_memalign(&result, alignment, length_bytes);
584-
// return status == 0 ? (pointer)result : nullptr;
585584
#if defined(USEARCH_DEFINED_WINDOWS)
586585
return (pointer)_aligned_malloc(length_bytes, alignment);
586+
#elif defined(USEARCH_DEFINED_APPLE)
587+
// Apple Clang keeps complaining that `aligned_alloc` is only available
588+
// with macOS 10.15 and newer, so let's use `posix_memalign` there.
589+
void* result = nullptr;
590+
int status = posix_memalign(&result, alignment, length_bytes);
591+
return status == 0 ? (pointer)result : nullptr;
587592
#else
588593
return (pointer)aligned_alloc(alignment, length_bytes);
589594
#endif

java/cloud/unum/usearch/cloud_unum_usearch_Index.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ JNIEXPORT jlong JNICALL Java_cloud_unum_usearch_Index_c_1create( //
3939
}
4040

4141
index_dense_t index = index_dense_t::make(metric, config);
42-
if (!index.reserve(static_cast<std::size_t>(capacity))) {
42+
if (!index.try_reserve(static_cast<std::size_t>(capacity))) {
4343
jclass jc = (*env).FindClass("java/lang/Error");
4444
if (jc)
4545
(*env).ThrowNew(jc, "Failed to reserve desired capacity!");
@@ -114,7 +114,7 @@ JNIEXPORT jlong JNICALL Java_cloud_unum_usearch_Index_c_1capacity(JNIEnv*, jclas
114114
}
115115

116116
JNIEXPORT void JNICALL Java_cloud_unum_usearch_Index_c_1reserve(JNIEnv* env, jclass, jlong c_ptr, jlong capacity) {
117-
if (!reinterpret_cast<index_dense_t*>(c_ptr)->reserve(static_cast<std::size_t>(capacity))) {
117+
if (!reinterpret_cast<index_dense_t*>(c_ptr)->try_reserve(static_cast<std::size_t>(capacity))) {
118118
jclass jc = (*env).FindClass("java/lang/Error");
119119
if (jc)
120120
(*env).ThrowNew(jc, "Failed to grow vector index!");

objc/USearchObjective.mm

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,15 +217,19 @@ - (void)clear {
217217
}
218218

219219
- (void)reserve:(UInt32)count {
220-
_native->reserve(static_cast<std::size_t>(count));
220+
if (!_native->try_reserve(static_cast<std::size_t>(count))) {
221+
@throw [NSException exceptionWithName:@"Can't reserve space"
222+
reason:@"Memory allocation failed"
223+
userInfo:nil];
224+
}
221225
}
222226

223227
- (Boolean)contains:(USearchKey)key {
224228
return _native->contains(key);
225229
}
226230

227231
- (UInt32)count:(USearchKey)key {
228-
return _native->count(key);
232+
return static_cast<UInt32>(_native->count(key));
229233
}
230234

231235
- (void)remove:(USearchKey)key {

0 commit comments

Comments
 (0)