diff --git a/src/lib.rs b/src/lib.rs index dd0d218b23292c6d43cbd285b0962923c980415f..6e8b4b45a8991462bd314dee0ec01af011fc31d0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -314,7 +314,12 @@ API violation: per_user_directory not UTF-8 encoded ({:?}: {})", // void pgp_release(PEP_SESSION session, bool out_last) ffi!(fn pgp_release(session: *mut Session, _out_last: bool) -> Result<()> { - Session::as_mut(session)?.deinit(); + // In C, it is usually okay to call a destructor, like `free`, + // with a `NULL` pointer: the function just does nothing. + // Implement the same semantics. + if ! session.is_null() { + Session::as_mut(session)?.deinit(); + } Ok(()) });