From 0e6e00af5ed29eaaf74cdc4b7d7f18e87dd4b7da Mon Sep 17 00:00:00 2001 From: lethosor Date: Sun, 20 Sep 2020 01:24:46 -0400 Subject: [PATCH] getplants: fix crash when world_object_data is not present for certain blocks --- docs/changelog.txt | 1 + plugins/getplants.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 88834c886..c7ab70b8e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -34,6 +34,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: # Future ## Fixes +- `getplants`: fixed a crash that could occur on some maps - `search`: fixed an issue causing item counts on the trade screen to display inconsistently when searching - `stockpiles`: fixed a crash when loading food stockpiles diff --git a/plugins/getplants.cpp b/plugins/getplants.cpp index cfe499a9b..242f56c3f 100644 --- a/plugins/getplants.cpp +++ b/plugins/getplants.cpp @@ -247,6 +247,9 @@ bool picked(const df::plant *plant, int32_t growth_subtype) { int32_t pos_y = site->global_min_y + plant->pos.y / 48; size_t id = pos_x + pos_y * 16 * world_data->world_width; df::world_object_data *object_data = df::world_object_data::find(id); + if (!object_data) { + return false; + } df::map_block_column *column = world->map.map_block_columns[(plant->pos.x / 16) * world->map.x_count_block + (plant->pos.y / 16)]; for (size_t i = 0; i < object_data->picked_growths.x.size(); i++) {