diff --git a/src/collation.rs b/src/collation.rs index 5c2d059..2084514 100644 --- a/src/collation.rs +++ b/src/collation.rs @@ -96,7 +96,12 @@ impl InnerConnection { Some(free_boxed_value::), ) }; - self.decode_result(r) + let res = self.decode_result(r); + // The xDestroy callback is not called if the sqlite3_create_collation_v2() function fails. + if res.is_err() { + drop(unsafe { Box::from_raw(boxed_f) }); + } + res } fn collation_needed(