Update get_unchecked to void Wreturn-type-c-linkage
Otherwise:
'cxxbridge02$std$vector$u8$get_unchecked' has C-linkage specified,
but returns user-defined type 'const uint8_t &' (aka 'const unsigned
char &') which is incompatible with C [-Wreturn-type-c-linkage]
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 6ec40e0..04003a0 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -666,9 +666,9 @@
unsafe fn __get_unchecked(v: &::cxx::CxxVector<#inner>, pos: usize) -> &#inner {
extern "C" {
#[link_name = #link_get_unchecked]
- fn __get_unchecked(_: &::cxx::CxxVector<#inner>, _: usize) -> &#inner;
+ fn __get_unchecked(_: &::cxx::CxxVector<#inner>, _: usize) -> *const #inner;
}
- __get_unchecked(v, pos)
+ &*__get_unchecked(v, pos)
}
fn __push_back(v: &::cxx::CxxVector<#inner>, item: &#inner) {
extern "C" {
@@ -703,9 +703,9 @@
unsafe fn __get_unchecked(v: &CxxVector<#inner>, pos: usize) -> &#inner {
extern "C" {
#[link_name = #link_get_unchecked]
- fn __get_unchecked(_: &CxxVector<#inner>, _: usize) -> &#inner;
+ fn __get_unchecked(_: &CxxVector<#inner>, _: usize) -> *const #inner;
}
- __get_unchecked(v, pos)
+ &*__get_unchecked(v, pos)
}
fn __push_back(v: &CxxVector<#inner>, item: &#inner) {
extern "C" {
diff --git a/src/cxx.cc b/src/cxx.cc
index d9be1fb..b9e4826 100644
--- a/src/cxx.cc
+++ b/src/cxx.cc
@@ -204,9 +204,9 @@
const std::vector<CXX_TYPE> &s) noexcept { \
return s.size(); \
} \
- const CXX_TYPE &cxxbridge02$std$vector$##RUST_TYPE##$get_unchecked( \
+ const CXX_TYPE *cxxbridge02$std$vector$##RUST_TYPE##$get_unchecked( \
const std::vector<CXX_TYPE> &s, size_t pos) noexcept { \
- return s[pos]; \
+ return &s[pos]; \
} \
void cxxbridge02$std$vector$##RUST_TYPE##$push_back( \
std::vector<CXX_TYPE> &s, const CXX_TYPE &item) noexcept { \