diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 146c8827b9d..a9f08d76070 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -2850,9 +2850,21 @@ fn static_assert() { pub fn copy_${shorthand}_image_from(&mut self, other: &Self) { + use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType; unsafe { - Gecko_CopyImageValueFrom(&mut self.gecko.${image_layers_field}.mLayers.mFirstElement.mImage, - &other.gecko.${image_layers_field}.mLayers.mFirstElement.mImage); + let count = other.gecko.${image_layers_field}.mImageCount; + unsafe { + Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, + 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()) + .take(count as usize) { + Gecko_CopyImageValueFrom(&mut layer.mImage, &other.mImage); + } + self.gecko.${image_layers_field}.mImageCount = count; } }