r13986 by herm - Added error checking.
scribus-commit
scribus-commit at lists.scribus.net
Mon Sep 14 18:59:07 CEST 2009
Revision: 13986
Author: herm
Date: 2009-09-14T00:59:18.718526Z
Commit message: Added error checking.
Changeset:
M /trunk/Scribus/scribus/scimgdataloader_gmagick.cpp
Diffs:
Index: scribus/scimgdataloader_gmagick.cpp
===================================================================
--- scribus/scimgdataloader_gmagick.cpp (revision 13985)
+++ scribus/scimgdataloader_gmagick.cpp (revision 13986)
@@ -37,8 +37,24 @@
bool hasAlpha = input->matte();
if (!output->create(width, height, hasAlpha ? 5 : 4)) return false;
const PixelPacket *pixels = input->getConstPixels(0, 0, width, height);
- const IndexPacket *alpha = input->getConstIndexes();
+ if (!pixels) {
+ qCritical() << QObject::tr("Could not get pixel data!");
+ return false;
+ }
+
+ const IndexPacket *alpha;
+ if (hasAlpha) {
+ alpha = input->getConstIndexes();
+ if (!alpha) {
+ qCritical() << QObject::tr("Could not get alpha channel data!");
+ return false;
+ }
+ }
unsigned char *buffer = output->bits();
+ if (!buffer) {
+ qCritical() << QObject::tr("Could not allocate output buffer!");
+ return false;
+ }
int i;
for (i = 0; i < width*height; i++) {
@@ -64,8 +80,16 @@
bool hasAlpha = input->matte();
const PixelPacket *pixels = input->getConstPixels(0, 0, width, height);
+ if (!pixels) {
+ qCritical() << QObject::tr("Could not get pixel data!");
+ return false;
+ }
unsigned char *buffer = output->bits();
-
+ if (!buffer) {
+ qCritical() << QObject::tr("Could not allocate output buffer!");
+ return false;
+ }
+
int i;
for (i = 0; i < width*height; i++) {
*buffer++ = ScaleQuantumToChar(GetBlueSample(pixels[i]));
@@ -187,11 +211,6 @@
double yres = image.yResolution();
int resInf = m_imageInfoRecord.lowResType;
- /*NOTE:
- - The BGRO bit ordering was found by try'n'error
- - Always use "O" for the alpha channel! "A" is inverted!
- - image.write() is broken for cmyk images!
- */
if (image.colorSpace() == CMYKColorspace) {
qDebug() << "CMYK image";
m_useRawImage = true;
More information about the scribus-commit
mailing list