Skip to content

Commit

Permalink
style: Avoid an intermediate buffer in Servo_Shorthand_AnimationValue…
Browse files Browse the repository at this point in the history
…s_Serialize.
  • Loading branch information
emilio committed Feb 13, 2018
1 parent 9e64008 commit a02431d
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions ports/geckolib/glue.rs
Expand Up @@ -702,10 +702,11 @@ pub extern "C" fn Servo_AnimationValue_Serialize(value: RawServoAnimationValueBo
}

#[no_mangle]
pub extern "C" fn Servo_Shorthand_AnimationValues_Serialize(shorthand_property: nsCSSPropertyID,
values: RawGeckoServoAnimationValueListBorrowed,
buffer: *mut nsAString)
{
pub unsafe extern "C" fn Servo_Shorthand_AnimationValues_Serialize(
shorthand_property: nsCSSPropertyID,
values: RawGeckoServoAnimationValueListBorrowed,
buffer: *mut nsAString,
) {
let property_id = get_property_id_from_nscsspropertyid!(shorthand_property, ());
let shorthand = match property_id.as_shorthand() {
Ok(shorthand) => shorthand,
Expand All @@ -717,14 +718,12 @@ pub extern "C" fn Servo_Shorthand_AnimationValues_Serialize(shorthand_property:
// about its lifetime. (longhands_to_css() expects &PropertyDeclaration
// iterator.)
let declarations: Vec<PropertyDeclaration> =
values.iter().map(|v| AnimationValue::as_arc(unsafe { &&*v.mRawPtr }).uncompute()).collect();
values.iter().map(|v| AnimationValue::as_arc(&&*v.mRawPtr).uncompute()).collect();

let mut string = String::new();
let rv = shorthand.longhands_to_css(declarations.iter(), &mut CssWriter::new(&mut string));
if rv.is_ok() {
let buffer = unsafe { buffer.as_mut().unwrap() };
buffer.assign_utf8(&string);
}
let _ = shorthand.longhands_to_css(
declarations.iter(),
&mut CssWriter::new(&mut *buffer),
);
}

#[no_mangle]
Expand Down

0 comments on commit a02431d

Please sign in to comment.