Browse Source

[2936] Handle rare relocation

Michal 'vorner' Vaner 12 years ago
parent
commit
8da51f50f0
1 changed files with 7 additions and 1 deletions
  1. 7 1
      src/lib/datasrc/memory/zone_data_updater.h

+ 7 - 1
src/lib/datasrc/memory/zone_data_updater.h

@@ -80,7 +80,13 @@ public:
             isc_throw(isc::InvalidOperation, "A ZoneDataUpdater already exists"
                       " on this memory segment. Destroy it first.");
         }
-        mem_sgmt_.setNamedAddress("updater_zone_data", zone_data_);
+        if (mem_sgmt_.setNamedAddress("updater_zone_data", zone_data_)) {
+            // It might have relocated during the set
+            zone_data_ =
+                static_cast<ZoneData*>(mem_sgmt_.getNamedAddress("updater_zone_data").
+                                       second);
+        }
+        assert(zone_data_);
     }
 
     /// The destructor.