]> AND Public Git Repository - simgrid.git/blobdiff - src/kernel/resource/WifiLinkImpl.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix double-free.
[simgrid.git] / src / kernel / resource / WifiLinkImpl.cpp
index 640bc2b25221427ca86add72e50e6c93a9bdf719..556a7ff7a904dedbe6d8c007efc5f0c04f1ba2b0 100644 (file)
@@ -10,9 +10,7 @@
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(res_network);
 
-namespace simgrid {
-namespace kernel {
-namespace resource {
+namespace simgrid::kernel::resource {
 
 /************
  * Resource *
@@ -28,9 +26,7 @@ WifiLinkImpl::WifiLinkImpl(const std::string& name, const std::vector<double>& b
 
 void WifiLinkImpl::set_host_rate(const s4u::Host* host, int rate_level)
 {
-  auto insert_done = host_rates_.try_emplace(host->get_name(), rate_level);
-  if (not insert_done.second)
-    insert_done.first->second = rate_level;
+  host_rates_[host->get_name()] = rate_level;
 
   // Each time we add a host, we refresh the decay model
   refresh_decay_bandwidths();
@@ -68,7 +64,7 @@ size_t WifiLinkImpl::get_host_count() const
 void WifiLinkImpl::refresh_decay_bandwidths()
 {
   // Compute number of STAtion on the Access Point
-  size_t nSTA = get_host_count();
+  const auto nSTA_minus_1 = static_cast<double>(get_host_count() - 1);
 
   std::vector<Metric> new_bandwidths;
   for (auto const& bandwidth : bandwidths_) {
@@ -80,7 +76,7 @@ void WifiLinkImpl::refresh_decay_bandwidths()
     double N0     = max_bw - min_bw;
     double lambda = (-log(model_rate - min_bw) + log(N0)) / model_n_;
     // Since decay model start at 0 we should use (nSTA-1)
-    double new_peak = N0 * exp(-lambda * (nSTA - 1)) + min_bw;
+    double new_peak = N0 * exp(-lambda * nSTA_minus_1) + min_bw;
     new_bandwidths.push_back({new_peak, 1.0, nullptr});
   }
   decay_bandwidths_ = new_bandwidths;
@@ -96,6 +92,4 @@ void WifiLinkImpl::set_latency(double value)
 {
   xbt_assert(value == 0, "Latency cannot be set for WiFi Links.");
 }
-} // namespace resource
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::resource