forked from mirrors/gecko-dev
Bug 1836883. Avoid passing ref function arguments to Rc::from_raw. r=eemeli
It is unfortunately undefined behavior and leads to problems with LLVM 16. Differential Revision: https://phabricator.services.mozilla.com/D180061
This commit is contained in:
parent
473dfcaa8f
commit
a13b4ea9e8
4 changed files with 5 additions and 5 deletions
|
|
@ -294,7 +294,7 @@ pub extern "C" fn fluent_bundle_format_pattern(
|
|||
#[no_mangle]
|
||||
pub unsafe extern "C" fn fluent_bundle_add_resource(
|
||||
bundle: &mut FluentBundleRc,
|
||||
r: &FluentResource,
|
||||
r: *const FluentResource,
|
||||
allow_overrides: bool,
|
||||
ret_errors: &mut ThinVec<nsCString>,
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ pub extern "C" fn fluent_resource_new(
|
|||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn fluent_resource_addref(res: &FluentResource) {
|
||||
pub unsafe extern "C" fn fluent_resource_addref(res: *const FluentResource) {
|
||||
let raw = ManuallyDrop::new(Rc::from_raw(res));
|
||||
mem::forget(Rc::clone(&raw));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -255,14 +255,14 @@ pub unsafe extern "C" fn l10nregistry_register_parent_process_sources(
|
|||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn l10nregistry_addref(reg: &GeckoL10nRegistry) {
|
||||
pub unsafe extern "C" fn l10nregistry_addref(reg: *const GeckoL10nRegistry) {
|
||||
let raw = Rc::from_raw(reg);
|
||||
mem::forget(Rc::clone(&raw));
|
||||
mem::forget(raw);
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn l10nregistry_release(reg: &GeckoL10nRegistry) {
|
||||
pub unsafe extern "C" fn l10nregistry_release(reg: *const GeckoL10nRegistry) {
|
||||
let _ = Rc::from_raw(reg);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ pub extern "C" fn l10nfilesource_new_mock(
|
|||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn l10nfilesource_addref(source: &FileSource) {
|
||||
pub unsafe extern "C" fn l10nfilesource_addref(source: *const FileSource) {
|
||||
let raw = Rc::from_raw(source);
|
||||
mem::forget(Rc::clone(&raw));
|
||||
mem::forget(raw);
|
||||
|
|
|
|||
Loading…
Reference in a new issue