diff --git a/modules/juce_graphics/native/juce_RenderingHelpers.h b/modules/juce_graphics/native/juce_RenderingHelpers.h index 01fa812fd0..c464f1cdaf 100644 --- a/modules/juce_graphics/native/juce_RenderingHelpers.h +++ b/modules/juce_graphics/native/juce_RenderingHelpers.h @@ -890,20 +890,22 @@ namespace EdgeTableFillers forcedinline void copyRow (DestPixelType* dest, SrcPixelType const* src, int width) const noexcept { - if (srcData.pixelStride == 3 && destData.pixelStride == 3) + const int destStride = destData.pixelStride; + const int srcStride = srcData.pixelStride; + + if (destStride == srcStride + && srcData.pixelFormat == Image::PixelFormat::RGB + && destData.pixelFormat == Image::PixelFormat::RGB) { - memcpy (dest, src, sizeof (PixelRGB) * (size_t) width); + memcpy (dest, src, (size_t) (width * srcStride)); } else { - const int destStride = destData.pixelStride; - const int srcStride = srcData.pixelStride; - do { dest->blend (*src); dest = addBytesToPointer (dest, destStride); - src = addBytesToPointer (src, srcStride); + src = addBytesToPointer (src, srcStride); } while (--width > 0); } }