From c06e3dcd589d5188be70cda9a6c9ef495dc8c78b Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Tue, 13 Feb 2018 17:23:59 -0800 Subject: [PATCH] style: Pass a bonafide nsACString to Servo. This will allow the Rust code hold a copy-free strong reference to the string past callstack unwind. Bug: 1454460 Reviewed-by: bz MozReview-Commit-ID: HCop9h2abZU --- ports/geckolib/glue.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 27d3c3093a34..8c99a5c59792 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -1130,8 +1130,7 @@ pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes( loader: *mut Loader, stylesheet: *mut ServoStyleSheet, load_data: *mut SheetLoadData, - data: *const u8, - data_len: usize, + bytes: *const nsACString, mode: SheetParsingMode, extra_data: *mut URLExtraData, line_number_offset: u32, @@ -1139,7 +1138,7 @@ pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes( reusable_sheets: *mut LoaderReusableStyleSheets, ) -> RawServoStyleSheetContentsStrong { let global_style_data = &*GLOBAL_STYLE_DATA; - let input = unsafe { ::std::str::from_utf8_unchecked(::std::slice::from_raw_parts(data, data_len)) }; + let input: &str = unsafe { (*bytes).as_str_unchecked() }; let origin = match mode { SheetParsingMode::eAuthorSheetFeatures => Origin::Author,