Skip to content

Commit bccdc30

Browse files
authored
fix:Memory Management in FFI Error Handling (#614)
- When fails, some error paths don't properly clean up allocated memory Signed-off-by: OneZero-Y <aukovyps@163.com>
1 parent c3258e6 commit bccdc30

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

candle-binding/src/ffi/embedding.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,10 @@ pub extern "C" fn calculate_embedding_similarity(
856856

857857
if status1 != 0 || emb_result1.error {
858858
eprintln!("Error generating embedding for text1");
859+
// Clean up allocated memory before returning
860+
if !emb_result1.data.is_null() {
861+
crate::ffi::memory::free_embedding(emb_result1.data, emb_result1.length);
862+
}
859863
unsafe {
860864
(*result) = EmbeddingSimilarityResult::default();
861865
}
@@ -876,6 +880,10 @@ pub extern "C" fn calculate_embedding_similarity(
876880
if !emb_result1.data.is_null() {
877881
crate::ffi::memory::free_embedding(emb_result1.data, emb_result1.length);
878882
}
883+
// Also clean up emb_result2
884+
if !emb_result2.data.is_null() {
885+
crate::ffi::memory::free_embedding(emb_result2.data, emb_result2.length);
886+
}
879887
unsafe {
880888
(*result) = EmbeddingSimilarityResult::default();
881889
}

0 commit comments

Comments
 (0)