Clone and destructor

master
Andrew Johnson 6 years ago
parent 8331a61b12
commit 004478ba40

@ -41,10 +41,18 @@ pub fn toErrorCode(i: i32) -> ErrorCode {
}
}
#[derive(Clone)]
pub struct AuthorizedSession
{
session: *const c_void
}
impl Drop for AuthorizedSession {
fn drop(&mut self) {
unsafe {
magic::free_override_session(self.session);
}
}
}
pub fn authorize_override() -> Result<AuthorizedSession,ErrorCode> {
let session = unsafe {

@ -3,3 +3,4 @@ extern crate libc;
mod magic;
mod admin;
mod tests;

@ -7,7 +7,7 @@ fn authorize_override() {
let session = admin::authorize_override().ok();
assert!(admin::is_override());
}
assert(!admin::is_override());
assert!(!admin::is_override());
assert!(admin::check_error(()).is_ok());
}
#[test]
@ -15,9 +15,9 @@ fn authorize_privileged() {
admin::reset_state();
{
let session = admin::authorize_privileged().ok();
assert(admin::is_privileged());
assert!(admin::is_privileged());
}
assert(!admin::is_privileged());
assert!(!admin::is_privileged());
assert!(admin::check_error(()).is_ok());
}
#[test]
@ -25,9 +25,9 @@ fn issue_admin_code() {
admin::reset_state();
{
let session = admin::authorize_admin().ok();
assert(admin::is_admin());
assert!(admin::is_admin());
}
assert(!admin::is_admin());
assert!(!admin::is_admin());
assert!(admin::check_error(()).is_ok());
}

Loading…
Cancel
Save