diff options
Diffstat (limited to 'src/mbgl/util/worker.cpp')
-rw-r--r-- | src/mbgl/util/worker.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mbgl/util/worker.cpp b/src/mbgl/util/worker.cpp index d1e54fa375..fe8ee81779 100644 --- a/src/mbgl/util/worker.cpp +++ b/src/mbgl/util/worker.cpp @@ -16,10 +16,12 @@ public: Impl() = default; void parseRasterTile(std::unique_ptr<RasterBucket> bucket, - const std::shared_ptr<const std::string> data, + std::shared_ptr<const std::string> data, std::function<void(RasterTileParseResult)> callback) { try { bucket->setImage(decodeImage(*data)); + // Destruct the shared pointer before calling the callback. + data.reset(); callback(RasterTileParseResult(std::move(bucket))); } catch (...) { callback(std::current_exception()); @@ -32,7 +34,7 @@ public: PlacementConfig config, std::function<void(TileParseResult)> callback) { try { - callback(worker->parseAllLayers(std::move(layers), *tile, config)); + callback(worker->parseAllLayers(std::move(layers), std::move(tile), config)); } catch (...) { callback(std::current_exception()); } |