style: Avoid an intermediate buffer in Servo_Shorthand_AnimationValues_Serialize.

This commit is contained in:
Emilio Cobos Álvarez 2018-02-13 14:11:45 +01:00
parent 9e64008e75
commit a02431d2ef
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -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,
@ -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]