From a8b0a550cdfe1f7a0bcb90850270eb0df12309db Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Fri, 19 May 2017 10:38:43 -0700 Subject: [PATCH] Bug 1365370 - stylo: Use correct counts when copying from image layers. --- components/style/properties/gecko.mako.rs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 4fd410c161f..be628135b93 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -2750,19 +2750,18 @@ fn static_assert() { pub fn copy_${shorthand}_${name}_from(&mut self, other: &Self) { use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType; + let count = other.gecko.${image_layers_field}.${field_name}Count; unsafe { Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, - other.gecko.${image_layers_field}.mLayers.len(), + count as usize, LayerType::${shorthand.title()}); } for (layer, other) in self.gecko.${image_layers_field}.mLayers.iter_mut() .zip(other.gecko.${image_layers_field}.mLayers.iter()) - .take(other.gecko.${image_layers_field} - .${field_name}Count as usize) { + .take(count as usize) { layer.${field_name} = other.${field_name}; } - self.gecko.${image_layers_field}.${field_name}Count = - other.gecko.${image_layers_field}.${field_name}Count; + self.gecko.${image_layers_field}.${field_name}Count = count; } @@ -2855,23 +2854,21 @@ fn static_assert() { pub fn copy_${shorthand}_position_${orientation}_from(&mut self, other: &Self) { use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType; - self.gecko.${image_layers_field}.mPosition${orientation.upper()}Count - = cmp::min(1, other.gecko.${image_layers_field}.mPosition${orientation.upper()}Count); - self.gecko.${image_layers_field}.mLayers.mFirstElement.mPosition = - other.gecko.${image_layers_field}.mLayers.mFirstElement.mPosition; + let count = other.gecko.${image_layers_field}.mPosition${orientation.upper()}Count; + unsafe { Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, - other.gecko.${image_layers_field}.mLayers.len(), + count as usize, LayerType::${shorthand.capitalize()}); } for (layer, other) in self.gecko.${image_layers_field}.mLayers.iter_mut() - .zip(other.gecko.${image_layers_field}.mLayers.iter()) { + .zip(other.gecko.${image_layers_field}.mLayers.iter()) + .take(count as usize) { layer.mPosition.m${orientation.upper()}Position = other.mPosition.m${orientation.upper()}Position; } - self.gecko.${image_layers_field}.mPosition${orientation.upper()}Count - = other.gecko.${image_layers_field}.mPosition${orientation.upper()}Count; + self.gecko.${image_layers_field}.mPosition${orientation.upper()}Count = count; } pub fn clone_${shorthand}_position_${orientation}(&self)