servo: Merge #16202 - stylo: Bug 1352067 - Initialize StyleAnimationValue with zeros (from BorisChiou:stylo/animation/initial_computed_keyframes); r=emilio

AnimationValue::mGecko and AnimationValue::mServo are mutually
exclusive, so we have to make sure mGecko.IsNull() returns reasonable
value, or we will got assertions. Hence, we should initialize it during
constructing StyleAnimationValue from Servo side.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix Bug 1352067.
- [X] These changes do not require tests because there are enough tests in Gecko

Source-Repo: https://github.com/servo/servo
Source-Revision: a70e4ac5b25251ca1c05e8eced12f2aefea4410d

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : bc8e26879318bc65845aaf0679d45f669c3d3713
This commit is contained in:
Boris Chiou 2017-03-31 05:20:26 -05:00
Родитель a39b0b03c5
Коммит d9d214de1d
1 изменённых файлов: 5 добавлений и 0 удалений

Просмотреть файл

@ -1551,6 +1551,7 @@ pub extern "C" fn Servo_GetComputedKeyframeValues(keyframes: RawGeckoKeyframeLis
raw_data: RawServoStyleSetBorrowed,
computed_keyframes: RawGeckoComputedKeyframeValuesListBorrowedMut)
{
use std::mem;
use style::properties::LonghandIdSet;
use style::properties::declaration_block::Importance;
use style::values::computed::Context;
@ -1614,6 +1615,10 @@ pub extern "C" fn Servo_GetComputedKeyframeValues(keyframes: RawGeckoKeyframeLis
unsafe { animation_values.set_len((i + 1) as u32) };
seen.set_transition_property_bit(&anim.0);
animation_values[i].mProperty = anim.0.into();
// We only make sure we have enough space for this variable,
// but didn't construct a default value for StyleAnimationValue,
// so we should zero it to avoid getting undefined behaviors.
animation_values[i].mValue.mGecko = unsafe { mem::zeroed() };
animation_values[i].mValue.mServo.set_arc_leaky(Arc::new(anim.1));
}
}