Browse Source

MacOS: Fixed some integer overflow issues when loading large images

tags/2021-05-28
Tom Poole 8 years ago
parent
commit
1dafeafef7
1 changed files with 3 additions and 3 deletions
  1. +3
    -3
      modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm

+ 3
- 3
modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm View File

@@ -36,7 +36,7 @@ public:
pixelStride = format == Image::RGB ? 3 : ((format == Image::ARGB) ? 4 : 1); pixelStride = format == Image::RGB ? 3 : ((format == Image::ARGB) ? 4 : 1);
lineStride = (pixelStride * jmax (1, width) + 3) & ~3; lineStride = (pixelStride * jmax (1, width) + 3) & ~3;
imageData.allocate ((size_t) (lineStride * jmax (1, height)), clearImage);
imageData.allocate ((size_t) lineStride * (size_t) jmax (1, height), clearImage);
CGColorSpaceRef colourSpace = (format == Image::SingleChannel) ? CGColorSpaceCreateDeviceGray() CGColorSpaceRef colourSpace = (format == Image::SingleChannel) ? CGColorSpaceCreateDeviceGray()
: CGColorSpaceCreateDeviceRGB(); : CGColorSpaceCreateDeviceRGB();
@@ -112,13 +112,13 @@ public:
if (mustOutliveSource) if (mustOutliveSource)
{ {
CFDataRef data = CFDataCreate (0, (const UInt8*) srcData.data, (CFIndex) (srcData.lineStride * srcData.height));
CFDataRef data = CFDataCreate (0, (const UInt8*) srcData.data, (CFIndex) ((size_t) srcData.lineStride * (size_t) srcData.height));
provider = CGDataProviderCreateWithCFData (data); provider = CGDataProviderCreateWithCFData (data);
CFRelease (data); CFRelease (data);
} }
else else
{ {
provider = CGDataProviderCreateWithData (0, srcData.data, (size_t) (srcData.lineStride * srcData.height), 0);
provider = CGDataProviderCreateWithData (0, srcData.data, (size_t) srcData.lineStride * (size_t) srcData.height, 0);
} }
CGImageRef imageRef = CGImageCreate ((size_t) srcData.width, CGImageRef imageRef = CGImageCreate ((size_t) srcData.width,


Loading…
Cancel
Save