diff --git a/src/ui/mappixmapitem.cpp b/src/ui/mappixmapitem.cpp index d96c7f61..9bbf254a 100644 --- a/src/ui/mappixmapitem.cpp +++ b/src/ui/mappixmapitem.cpp @@ -260,22 +260,25 @@ void MapPixmapItem::magicFill(QGraphicsSceneMouseEvent *event) { int initialX = static_cast(pos.x()) / 16; int initialY = static_cast(pos.y()) / 16; Block *block = map->getBlock(initialX, initialY); - QList *selectedMetatiles = this->metatileSelector->getSelectedMetatiles(); - QPoint selectionDimensions = this->metatileSelector->getSelectionDimensions(); - uint16_t tile = block->tile; - for (int y = 0; y < map->getHeight(); y++) { - for (int x = 0; x < map->getWidth(); x++) { - block = map->getBlock(x, y); - if (block && block->tile == tile) { - int xDiff = x - initialX; - int yDiff = y - initialY; - int i = xDiff % selectionDimensions.x(); - int j = yDiff % selectionDimensions.y(); - if (i < 0) i = selectionDimensions.x() + i; - if (j < 0) j = selectionDimensions.y() + j; - block->tile = selectedMetatiles->at(j * selectionDimensions.x() + i); - map->_setBlock(x, y, *block); + if (block) { + QList *selectedMetatiles = this->metatileSelector->getSelectedMetatiles(); + QPoint selectionDimensions = this->metatileSelector->getSelectionDimensions(); + uint16_t tile = block->tile; + + for (int y = 0; y < map->getHeight(); y++) { + for (int x = 0; x < map->getWidth(); x++) { + block = map->getBlock(x, y); + if (block && block->tile == tile) { + int xDiff = x - initialX; + int yDiff = y - initialY; + int i = xDiff % selectionDimensions.x(); + int j = yDiff % selectionDimensions.y(); + if (i < 0) i = selectionDimensions.x() + i; + if (j < 0) j = selectionDimensions.y() + j; + block->tile = selectedMetatiles->at(j * selectionDimensions.x() + i); + map->_setBlock(x, y, *block); + } } } }