mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #15630 - heycam:calc, r=Manishearth
stylo: Don't leak nsStyleCoord::Calc objects when setting gradients. Fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1340509. My initial inclination was to add a Drop impl to nsStyleCoord but I'm not sure if that's a good idea with the FFI types. r? @Manishearth <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/15630) <!-- Reviewable:end -->
This commit is contained in:
commit
eb6082fd78
2 changed files with 11 additions and 2 deletions
|
@ -297,10 +297,10 @@ impl nsStyleImage {
|
|||
},
|
||||
};
|
||||
|
||||
let mut coord: nsStyleCoord = nsStyleCoord::null();
|
||||
for (index, stop) in gradient.stops.iter().enumerate() {
|
||||
// NB: stops are guaranteed to be none in the gecko side by
|
||||
// default.
|
||||
let mut coord: nsStyleCoord = nsStyleCoord::null();
|
||||
coord.set(stop.position);
|
||||
let color = match stop.color {
|
||||
CSSColor::CurrentColor => {
|
||||
|
@ -322,7 +322,7 @@ impl nsStyleImage {
|
|||
|
||||
stop.mColor = color;
|
||||
stop.mIsInterpolationHint = false;
|
||||
stop.mLocation.copy_from(&coord);
|
||||
stop.mLocation.move_from(coord);
|
||||
}
|
||||
|
||||
unsafe {
|
||||
|
|
|
@ -264,6 +264,15 @@ pub trait CoordDataMut : CoordData {
|
|||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
/// Moves the unit and value from another `CoordData` type.
|
||||
fn move_from<T: CoordData>(&mut self, other: T) {
|
||||
unsafe {
|
||||
self.reset();
|
||||
self.copy_from_unchecked(&other);
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
/// Copies the unit and value from another `CoordData` type without checking
|
||||
/// the type of the value (so refcounted values like calc may leak).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue