diff --git a/libs/ui/KisSaveGroupVisitor.cpp b/libs/ui/KisSaveGroupVisitor.cpp --- a/libs/ui/KisSaveGroupVisitor.cpp +++ b/libs/ui/KisSaveGroupVisitor.cpp @@ -104,18 +104,18 @@ QRect r = m_image->bounds(); KisDocument *exportDocument = KisPart::instance()->createDocument(); - - KisImageSP dst = new KisImage(exportDocument->createUndoStore(), r.width(), r.height(), m_image->colorSpace(), layer->name()); - dst->setResolution(m_image->xRes(), m_image->yRes()); - exportDocument->setCurrentImage(dst); - KisPaintLayer* paintLayer = new KisPaintLayer(dst, "projection", layer->opacity()); - KisPainter gc(paintLayer->paintDevice()); - gc.bitBlt(QPoint(0, 0), layer->projection(), r); - dst->addNode(paintLayer, dst->rootLayer(), KisLayerSP(0)); - - dst->refreshGraph(); - - + { // make sure dst is deleted before calling 'delete exportDocument', + // since KisDocument checks that its image is properly deref()'d. + KisImageSP dst = new KisImage(exportDocument->createUndoStore(), r.width(), r.height(), m_image->colorSpace(), layer->name()); + dst->setResolution(m_image->xRes(), m_image->yRes()); + exportDocument->setCurrentImage(dst); + KisPaintLayer* paintLayer = new KisPaintLayer(dst, "projection", layer->opacity()); + KisPainter gc(paintLayer->paintDevice()); + gc.bitBlt(QPoint(0, 0), layer->projection(), r); + dst->addNode(paintLayer, dst->rootLayer(), KisLayerSP(0)); + + dst->refreshGraph(); + } QString path = m_path + "/" + m_baseName + "_" + layer->name().replace(' ', '_') + '.' + m_extension; QUrl url = QUrl::fromLocalFile(path); diff --git a/plugins/extensions/imagesplit/imagesplit.cpp b/plugins/extensions/imagesplit/imagesplit.cpp --- a/plugins/extensions/imagesplit/imagesplit.cpp +++ b/plugins/extensions/imagesplit/imagesplit.cpp @@ -65,16 +65,19 @@ KisDocument *document = KisPart::instance()->createDocument(); - KisImageSP dst = new KisImage(document->createUndoStore(), imgSize.width(), imgSize.height(), image->colorSpace(), image->objectName()); - dst->setResolution(image->xRes(), image->yRes()); - document->setCurrentImage(dst); - - KisPaintLayer* paintLayer = new KisPaintLayer(dst, dst->nextLayerName(), 255); - KisPainter gc(paintLayer->paintDevice()); - gc.bitBlt(QPoint(0, 0), image->projection(), imgSize); - - dst->addNode(paintLayer, KisNodeSP(0)); - dst->refreshGraph(); + { // make sure dst is deleted before calling 'delete exportDocument', + // since KisDocument checks that its image is properly deref()'d. + KisImageSP dst = new KisImage(document->createUndoStore(), imgSize.width(), imgSize.height(), image->colorSpace(), image->objectName()); + dst->setResolution(image->xRes(), image->yRes()); + document->setCurrentImage(dst); + + KisPaintLayer* paintLayer = new KisPaintLayer(dst, dst->nextLayerName(), 255); + KisPainter gc(paintLayer->paintDevice()); + gc.bitBlt(QPoint(0, 0), image->projection(), imgSize); + + dst->addNode(paintLayer, KisNodeSP(0)); + dst->refreshGraph(); + } document->setFileBatchMode(true); if (!document->exportDocumentSync(QUrl::fromLocalFile(url), mimeType.toLatin1())) { if (document->errorMessage().isEmpty()) {