From d9ef6c780617d1d2d1194603f29eeb2d253de5ae Mon Sep 17 00:00:00 2001 From: luaneko Date: Sat, 28 Jun 2025 06:03:12 +1000 Subject: [PATCH] All internal library functions should be prefixed --- crates/luaffi/src/lib.rs | 18 +++++++++--------- crates/luaffi/src/string.rs | 8 ++++---- crates/luaffi_impl/src/metatype.rs | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/crates/luaffi/src/lib.rs b/crates/luaffi/src/lib.rs index 3855db4..4e920e2 100644 --- a/crates/luaffi/src/lib.rs +++ b/crates/luaffi/src/lib.rs @@ -26,8 +26,8 @@ pub mod string; // `ffi.keep(obj)`. // // https://github.com/LuaJIT/LuaJIT/issues/1167 -pub(crate) const KEEP_FN: &str = "luaffi_keep"; -#[unsafe(export_name = "luaffi_keep")] +pub(crate) const KEEP_FN: &str = "__lf_keep"; +#[unsafe(export_name = "__lf_keep")] extern "C" fn __keep(_ptr: *const c_void) {} export![__keep]; @@ -577,22 +577,22 @@ impl<'r, 'm> MetatypeFunctionBuilder<'r, 'm> { if T::Into::ty() == TypeType::Void { write!(lua, "__C.{func}({cargs}); {postlude}end").unwrap(); } else { - let check = T::postlude("__ret"); - write!(lua, "local __ret = __C.{func}({cargs}); ").unwrap(); - write!(lua, "{check}{postlude}return __ret; end").unwrap(); + let check = T::postlude("ret"); + write!(lua, "local ret = __C.{func}({cargs}); ").unwrap(); + write!(lua, "{check}{postlude}return ret; end").unwrap(); } writeln!(cdef, "{};", T::Into::cdecl(display!("{func}({cparams})"))).unwrap(); } FfiReturnConvention::ByOutParam => { let ct = T::Into::name(); - let check = T::postlude("__out"); - write!(lua, "local __out = __new(__ct.{ct}); __C.{func}(__out").unwrap(); + let check = T::postlude("__ret"); + write!(lua, "local __ret = __new(__ct.{ct}); __C.{func}(__ret").unwrap(); if !cargs.is_empty() { write!(lua, ", {cargs}").unwrap(); } - write!(lua, "); {check}{postlude}return __out; end").unwrap(); - write!(cdef, "void {func}({}", <*mut T::Into>::cdecl("out")).unwrap(); + write!(lua, "); {check}{postlude}return __ret; end").unwrap(); + write!(cdef, "void {func}({}", <*mut T::Into>::cdecl("__out")).unwrap(); if !cparams.is_empty() { write!(cdef, ", {cparams}").unwrap(); } diff --git a/crates/luaffi/src/string.rs b/crates/luaffi/src/string.rs index 33dc932..69e522e 100644 --- a/crates/luaffi/src/string.rs +++ b/crates/luaffi/src/string.rs @@ -6,16 +6,16 @@ use bstr::{BStr, BString}; use luaffi_impl::{cdef, metatype}; use std::{fmt::Display, mem::ManuallyDrop, slice}; -pub(crate) const IS_UTF8_FN: &str = "luaffi_is_utf8"; -pub(crate) const DROP_BUFFER_FN: &str = "luaffi_drop_buffer"; +pub(crate) const IS_UTF8_FN: &str = "__lf_is_utf8"; +pub(crate) const DROP_BUFFER_FN: &str = "__lf_drop_buffer"; -#[unsafe(export_name = "luaffi_is_utf8")] +#[unsafe(export_name = "__lf_is_utf8")] unsafe extern "C" fn __is_utf8(ptr: *const u8, len: usize) -> bool { debug_assert!(!ptr.is_null()); simdutf8::basic::from_utf8(unsafe { slice::from_raw_parts(ptr, len) }).is_ok() } -#[unsafe(export_name = "luaffi_drop_buffer")] +#[unsafe(export_name = "__lf_drop_buffer")] unsafe extern "C" fn __drop_buffer(buf: *mut lua_buffer) { debug_assert!(!buf.is_null()); debug_assert!(!unsafe { (*buf).__ptr.is_null() }); diff --git a/crates/luaffi_impl/src/metatype.rs b/crates/luaffi_impl/src/metatype.rs index e5f7cc0..326b7bd 100644 --- a/crates/luaffi_impl/src/metatype.rs +++ b/crates/luaffi_impl/src/metatype.rs @@ -701,7 +701,7 @@ fn inject_merged_drop(registry: &mut Registry, lua: Option<&LuaFunction>) -> Res let luaify = quote!(#ffi::__internal::luaify!); let ty = ®istry.ty; let shim_name = format_ident!("__ffi_drop"); - let c_name = format_ident!("{}_drop", ty.unraw()); + let c_name = format_ident!("__{}_drop", ty.unraw()); let c_name_str = c_name.to_string(); if let Some(lua) = lua {