diff --git a/src/nodemetadata.cpp b/src/nodemetadata.cpp index eb577b2da..43770fee1 100644 --- a/src/nodemetadata.cpp +++ b/src/nodemetadata.cpp @@ -225,8 +225,13 @@ void NodeMetadataList::remove(v3s16 p) { NodeMetadata *olddata = get(p); if (olddata) { - if (m_is_metadata_owner) + if (m_is_metadata_owner) { + // clearing can throw an exception due to the invlist resize lock, + // which we don't want to happen in the noexcept destructor + // => call clear before + olddata->clear(); delete olddata; + } m_data.erase(p); } }