Expose getPointedThing to Lua
[oweals/minetest.git] / src / util / areastore.cpp
index 17addb3af615fd9dd9e0d42f4c5a168e096108d8..c660502f62f319b1f1af064cd1a999f0d012c079 100644 (file)
@@ -58,7 +58,7 @@ const Area *AreaStore::getArea(u32 id) const
 {
        AreaMap::const_iterator it = areas_map.find(id);
        if (it == areas_map.end())
-               return NULL;
+               return nullptr;
        return &it->second;
 }
 
@@ -95,6 +95,7 @@ void AreaStore::deserialize(std::istream &is)
                is.read(data, data_len);
                a.data = std::string(data, data_len);
                insertArea(&a);
+               delete [] data;
        }
 }
 
@@ -160,7 +161,8 @@ void AreaStore::getAreasForPos(std::vector<Area *> *result, v3s16 pos)
 
 bool VectorAreaStore::insertArea(Area *a)
 {
-       a->id = getNextId();
+       if (a->id == U32_MAX)
+               a->id = getNextId();
        std::pair<AreaMap::iterator, bool> res =
                        areas_map.insert(std::make_pair(a->id, *a));
        if (!res.second)
@@ -232,11 +234,12 @@ static inline SpatialIndex::Point get_spatial_point(const v3s16 pos)
 
 bool SpatialAreaStore::insertArea(Area *a)
 {
-       a->id = getNextId();
+       if (a->id == U32_MAX)
+               a->id = getNextId();
        if (!areas_map.insert(std::make_pair(a->id, *a)).second)
                // ID is not unique
                return false;
-       m_tree->insertData(0, NULL, get_spatial_region(a->minedge, a->maxedge), a->id);
+       m_tree->insertData(0, nullptr, get_spatial_region(a->minedge, a->maxedge), a->id);
        invalidateCache();
        return true;
 }