Browse Source

CoreGraphics: Avoid allocating over-large buffers for clipped image data

pull/22/head
reuk 3 years ago
parent
commit
db3a0a1ae8
No known key found for this signature in database GPG Key ID: 9ADCD339CFC98A11
1 changed files with 9 additions and 10 deletions
  1. +9
    -10
      modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm

+ 9
- 10
modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm View File

@@ -124,19 +124,18 @@ public:
[] (void * __nullable info, const void*, size_t) { delete (ImageDataContainer::Ptr*) info; }) };
}
CFUniquePtr<CFDataRef> data (CFDataCreate (nullptr, (const UInt8*) srcData.data, (CFIndex) srcData.size));
const auto usableSize = jmin ((size_t) srcData.lineStride * (size_t) srcData.height, srcData.size);
CFUniquePtr<CFDataRef> data (CFDataCreate (nullptr, (const UInt8*) srcData.data, (CFIndex) usableSize));
return detail::DataProviderPtr { CGDataProviderCreateWithCFData (data.get()) };
}();
CGImageRef imageRef = CGImageCreate ((size_t) srcData.width,
(size_t) srcData.height,
8,
(size_t) srcData.pixelStride * 8,
(size_t) srcData.lineStride,
colourSpace, getCGImageFlags (juceImage.getFormat()), provider.get(),
nullptr, true, kCGRenderingIntentDefault);
return imageRef;
return CGImageCreate ((size_t) srcData.width,
(size_t) srcData.height,
8,
(size_t) srcData.pixelStride * 8,
(size_t) srcData.lineStride,
colourSpace, getCGImageFlags (juceImage.getFormat()), provider.get(),
nullptr, true, kCGRenderingIntentDefault);
}
//==============================================================================


Loading…
Cancel
Save