From 32b05936a96b753d44facc0f6f5ae074d12b1ef5 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Tue, 8 Nov 2016 11:46:26 -0800 Subject: [PATCH] Bug 1292275 - Stylo: Fix crash after failed stylesheet load. r=heycam Fixes a crash ServoStyleSet::AddDocStyleSheet caused by ServoStyleSheet::RawSheet returning null. MozReview-Commit-ID: BdDosompqTv --- ports/geckolib/glue.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index c3c9b856dd4..70131075f0c 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -164,6 +164,22 @@ pub extern "C" fn Servo_Node_ClearNodeData(node: RawGeckoNodeBorrowed) -> () { } } +#[no_mangle] +pub extern "C" fn Servo_StyleSheet_Empty(mode: SheetParsingMode) -> RawServoStyleSheetStrong { + let url = Url::parse("about:blank").unwrap(); + let extra_data = ParserContextExtraData::default(); + let origin = match mode { + SheetParsingMode::eAuthorSheetFeatures => Origin::Author, + SheetParsingMode::eUserSheetFeatures => Origin::User, + SheetParsingMode::eAgentSheetFeatures => Origin::UserAgent, + }; + let sheet = Arc::new(Stylesheet::from_str("", url, origin, Box::new(StdoutErrorReporter), + extra_data)); + unsafe { + transmute(sheet) + } +} + #[no_mangle] pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(data: *const nsACString, mode: SheetParsingMode,