Don't use mem::uninitialized() for making calc values

We had code relying on `nsStyleCoord::set()` being leaky (like it was before we
patched up the calc bindings). Added `nsStyleCoord::null()` for this use case
since it's not possible to construct directly anymore.
This commit is contained in:
Manish Goregaokar 2016-09-01 09:03:30 +05:30
parent 78baf21c54
commit 5ec2226f5b
No known key found for this signature in database
GPG key ID: 3BBF4D3E2EF79F98
2 changed files with 13 additions and 2 deletions

View file

@ -3,9 +3,20 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use bindings::{Gecko_ResetStyleCoord, Gecko_SetStyleCoordCalcValue, Gecko_AddRefCalcArbitraryThread};
use std::mem;
use structs::{nsStyleCoord_Calc, nsStyleUnit, nsStyleUnion, nsStyleCoord, nsStyleSides, nsStyleCorners};
use structs::{nsStyleCoord_CalcValue, nscoord};
impl nsStyleCoord {
#[inline]
pub fn null() -> Self {
// Can't construct directly because it has private fields
let mut coord: Self = unsafe { mem::zeroed() };
coord.leaky_set_null();
coord
}
}
impl CoordData for nsStyleCoord {
#[inline]
fn unit(&self) -> nsStyleUnit {