Don't panic when body element don't have style data. r?heycam draft
authorXidorn Quan <me@upsuper.org>
Wed, 19 Jul 2017 19:18:40 +1000
changeset 611248 4f243ae85850e8bbfba6bcc62079b5919e02f191
parent 611005 58a0107b788e9602072d340993f8fa6f2618937c
child 611249 931eb2045c0737546bfc8c5a92cd174acd48bd0c
child 611252 9a26f5bd81b47bbdaa13757863db1cbc3df83e9b
push id69146
push userxquan@mozilla.com
push dateWed, 19 Jul 2017 09:30:39 +0000
reviewersheycam
milestone56.0a1
Don't panic when body element don't have style data. r?heycam MozReview-Commit-ID: 4GuGK0i76eU
servo/components/style/values/specified/color.rs
--- a/servo/components/style/values/specified/color.rs
+++ b/servo/components/style/values/specified/color.rs
@@ -264,24 +264,20 @@ impl ToComputedValue for Color {
                 })
             }
             #[cfg(feature = "gecko")]
             Color::InheritFromBodyQuirk => {
                 use dom::TElement;
                 use gecko::wrapper::GeckoElement;
                 use gecko_bindings::bindings::Gecko_GetBody;
                 let pres_context = _context.device.pres_context();
-                let body = unsafe {
-                    Gecko_GetBody(pres_context)
-                };
-                if let Some(body) = body {
-                    let wrap = GeckoElement(body);
-                    let borrow = wrap.borrow_data();
-                    ComputedColor::rgba(borrow.as_ref().unwrap()
-                                              .styles.primary()
+                let body = unsafe { Gecko_GetBody(pres_context) }.map(|body| GeckoElement(body));
+                let borrow = body.as_ref().and_then(|wrap| wrap.borrow_data());
+                if let Some(borrow) = borrow {
+                    ComputedColor::rgba(borrow.styles.primary()
                                               .get_color()
                                               .clone_color())
                 } else {
                     convert_nscolor_to_computedcolor(pres_context.mDefaultColor)
                 }
             },
         }
     }