From 72a809bcfd78e6d73b8ed7a9d9bcaebf211b70c3 Mon Sep 17 00:00:00 2001 From: Mirco Miranda Date: Sat, 22 Nov 2025 10:00:03 +0100 Subject: [PATCH] XCF: initialize tiles and buffers --- src/imageformats/xcf.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/imageformats/xcf.cpp b/src/imageformats/xcf.cpp index 2c58654..b2ad9fa 100644 --- a/src/imageformats/xcf.cpp +++ b/src/imageformats/xcf.cpp @@ -1437,6 +1437,7 @@ bool XCFImageFormat::composeTiles(XCFImage &xcf_image) return false; } layer.image_tiles[j][i].setColorCount(0); + layer.image_tiles[j][i].fill(0); break; case GRAY_GIMAGE: @@ -1445,15 +1446,17 @@ bool XCFImageFormat::composeTiles(XCFImage &xcf_image) return false; } layer.image_tiles[j][i].setColorCount(256); + layer.image_tiles[j][i].fill(0); setGrayPalette(layer.image_tiles[j][i]); break; case GRAYA_GIMAGE: layer.image_tiles[j][i] = QImage(tile_width, tile_height, QImage::Format_Indexed8); - layer.image_tiles[j][i].setColorCount(256); if (layer.image_tiles[j][i].isNull()) { return false; } + layer.image_tiles[j][i].setColorCount(256); + layer.image_tiles[j][i].fill(0); setGrayPalette(layer.image_tiles[j][i]); layer.alpha_tiles[j][i] = QImage(tile_width, tile_height, QImage::Format_Indexed8); @@ -1461,15 +1464,17 @@ bool XCFImageFormat::composeTiles(XCFImage &xcf_image) return false; } layer.alpha_tiles[j][i].setColorCount(256); + layer.alpha_tiles[j][i].fill(0); setGrayPalette(layer.alpha_tiles[j][i]); break; case INDEXED_GIMAGE: layer.image_tiles[j][i] = QImage(tile_width, tile_height, QImage::Format_Indexed8); - layer.image_tiles[j][i].setColorCount(xcf_image.num_colors); if (layer.image_tiles[j][i].isNull()) { return false; } + layer.image_tiles[j][i].setColorCount(xcf_image.num_colors); + layer.image_tiles[j][i].fill(0); setPalette(xcf_image, layer.image_tiles[j][i]); break; @@ -1479,6 +1484,7 @@ bool XCFImageFormat::composeTiles(XCFImage &xcf_image) return false; } layer.image_tiles[j][i].setColorCount(xcf_image.num_colors); + layer.image_tiles[j][i].fill(0); setPalette(xcf_image, layer.image_tiles[j][i]); layer.alpha_tiles[j][i] = QImage(tile_width, tile_height, QImage::Format_Indexed8); @@ -1486,6 +1492,7 @@ bool XCFImageFormat::composeTiles(XCFImage &xcf_image) return false; } layer.alpha_tiles[j][i].setColorCount(256); + layer.alpha_tiles[j][i].fill(0); setGrayPalette(layer.alpha_tiles[j][i]); } if (layer.type != GRAYA_GIMAGE && layer.image_tiles[j][i].format() != format) { @@ -1523,10 +1530,11 @@ bool XCFImageFormat::composeTiles(XCFImage &xcf_image) #endif if (layer.mask_offset != 0) { layer.mask_tiles[j][i] = QImage(tile_width, tile_height, QImage::Format_Indexed8); - layer.mask_tiles[j][i].setColorCount(256); if (layer.mask_tiles[j][i].isNull()) { return false; } + layer.mask_tiles[j][i].setColorCount(256); + layer.mask_tiles[j][i].fill(0); setGrayPalette(layer.mask_tiles[j][i]); } } @@ -2063,6 +2071,7 @@ bool XCFImageFormat::loadLevel(QDataStream &xcf_io, Layer &layer, qint32 bpp, co QList buffer; if (needConvert) { buffer.resize(blockSize * (bpp == 2 ? 2 : 1)); + buffer.fill(uchar()); } for (uint j = 0; j < layer.nrows; j++) { for (uint i = 0; i < layer.ncols; i++) {