summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Moore <me@justinm.one>2021-12-30 19:41:57 -0600
committerEmilio Cobos Álvarez <emilio@crisal.io>2022-01-29 11:29:00 +0100
commitbe6d07ac2c00ada005e5512b19ff6c6a34cfe985 (patch)
treea3b1976c0473632621bba86f99e196ba2bd70e7c
parent0587ff95a9a411c7392ff2aa1775f69ac36caff5 (diff)
Mark all vtable functions as `unsafe extern "C"`
-rw-r--r--src/codegen/mod.rs2
-rw-r--r--tests/expectations/tests/enum_and_vtable_mangling.rs2
-rw-r--r--tests/expectations/tests/nested_vtable.rs2
-rw-r--r--tests/expectations/tests/ref_argument_array.rs6
-rw-r--r--tests/expectations/tests/virtual_interface.rs10
-rw-r--r--tests/expectations/tests/virtual_overloaded.rs6
-rw-r--r--tests/expectations/tests/vtable_recursive_sig.rs2
7 files changed, 18 insertions, 12 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index b7cee7ec..5ce42c34 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1082,7 +1082,7 @@ impl<'a> CodeGenerator for Vtable<'a> {
};
Some(quote! {
- pub #function_name : fn( #( #args ),* ) #ret
+ pub #function_name : unsafe extern "C" fn( #( #args ),* ) #ret
})
})
.collect::<Vec<_>>();
diff --git a/tests/expectations/tests/enum_and_vtable_mangling.rs b/tests/expectations/tests/enum_and_vtable_mangling.rs
index 126c40ba..bd6f7ff6 100644
--- a/tests/expectations/tests/enum_and_vtable_mangling.rs
+++ b/tests/expectations/tests/enum_and_vtable_mangling.rs
@@ -15,7 +15,7 @@ pub enum _bindgen_ty_1 {
}
#[repr(C)]
pub struct C__bindgen_vtable {
- pub C_match: fn(this: &mut C),
+ pub C_match: unsafe extern "C" fn(this: &mut C),
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
diff --git a/tests/expectations/tests/nested_vtable.rs b/tests/expectations/tests/nested_vtable.rs
index 92651d45..8747a59f 100644
--- a/tests/expectations/tests/nested_vtable.rs
+++ b/tests/expectations/tests/nested_vtable.rs
@@ -8,7 +8,7 @@
#[repr(C)]
pub struct nsISupports__bindgen_vtable {
pub nsISupports_QueryInterface:
- fn(this: &mut nsISupports) -> *mut nsISupports,
+ unsafe extern "C" fn(this: &mut nsISupports) -> *mut nsISupports,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
diff --git a/tests/expectations/tests/ref_argument_array.rs b/tests/expectations/tests/ref_argument_array.rs
index 215fc5da..a99bf2c3 100644
--- a/tests/expectations/tests/ref_argument_array.rs
+++ b/tests/expectations/tests/ref_argument_array.rs
@@ -8,8 +8,10 @@
pub const NSID_LENGTH: u32 = 10;
#[repr(C)]
pub struct nsID__bindgen_vtable {
- pub nsID_ToProvidedString:
- fn(this: &mut nsID, aDest: *mut [::std::os::raw::c_char; 10usize]),
+ pub nsID_ToProvidedString: unsafe extern "C" fn(
+ this: &mut nsID,
+ aDest: *mut [::std::os::raw::c_char; 10usize],
+ ),
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
diff --git a/tests/expectations/tests/virtual_interface.rs b/tests/expectations/tests/virtual_interface.rs
index 79656c28..7677c51f 100644
--- a/tests/expectations/tests/virtual_interface.rs
+++ b/tests/expectations/tests/virtual_interface.rs
@@ -7,9 +7,11 @@
#[repr(C)]
pub struct PureVirtualIFace__bindgen_vtable {
- pub PureVirtualIFace_Foo: fn(this: &mut PureVirtualIFace),
- pub PureVirtualIFace_Bar:
- fn(this: &mut PureVirtualIFace, arg1: ::std::os::raw::c_uint),
+ pub PureVirtualIFace_Foo: unsafe extern "C" fn(this: &mut PureVirtualIFace),
+ pub PureVirtualIFace_Bar: unsafe extern "C" fn(
+ this: &mut PureVirtualIFace,
+ arg1: ::std::os::raw::c_uint,
+ ),
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
@@ -40,7 +42,7 @@ impl Default for PureVirtualIFace {
}
#[repr(C)]
pub struct AnotherInterface__bindgen_vtable {
- pub AnotherInterface_Baz: fn(this: &mut AnotherInterface),
+ pub AnotherInterface_Baz: unsafe extern "C" fn(this: &mut AnotherInterface),
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
diff --git a/tests/expectations/tests/virtual_overloaded.rs b/tests/expectations/tests/virtual_overloaded.rs
index f619f4ea..3fcfe33e 100644
--- a/tests/expectations/tests/virtual_overloaded.rs
+++ b/tests/expectations/tests/virtual_overloaded.rs
@@ -7,8 +7,10 @@
#[repr(C)]
pub struct C__bindgen_vtable {
- pub C_do_thing: fn(this: &mut C, arg1: ::std::os::raw::c_char),
- pub C_do_thing1: fn(this: &mut C, arg1: ::std::os::raw::c_int),
+ pub C_do_thing:
+ unsafe extern "C" fn(this: &mut C, arg1: ::std::os::raw::c_char),
+ pub C_do_thing1:
+ unsafe extern "C" fn(this: &mut C, arg1: ::std::os::raw::c_int),
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
diff --git a/tests/expectations/tests/vtable_recursive_sig.rs b/tests/expectations/tests/vtable_recursive_sig.rs
index f136c015..dd1b0f4d 100644
--- a/tests/expectations/tests/vtable_recursive_sig.rs
+++ b/tests/expectations/tests/vtable_recursive_sig.rs
@@ -7,7 +7,7 @@
#[repr(C)]
pub struct Base__bindgen_vtable {
- pub Base_AsDerived: fn(this: &mut Base) -> *mut Derived,
+ pub Base_AsDerived: unsafe extern "C" fn(this: &mut Base) -> *mut Derived,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]