Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
On some systems, sqrt(int) is not defined properly. On others its just implemented...
[simgrid.git] / src / surf / xml / surfxml_sax_cb.cpp
index 26046c6b5e558ea7bbe7091ba892778381bfff7c..811474ea1b4e2d2196d239164d53904277ef3c4c 100644 (file)
@@ -86,7 +86,7 @@ double surf_parse_get_double(const std::string& s)
 {
   try {
     return std::stod(s);
-  } catch (std::invalid_argument& ia) {
+  } catch (const std::invalid_argument&) {
     surf_parse_error(s + " is not a double");
   }
 }
@@ -95,7 +95,7 @@ int surf_parse_get_int(const std::string& s)
 {
   try {
     return std::stoi(s);
-  } catch (std::invalid_argument& ia) {
+  } catch (const std::invalid_argument&) {
     surf_parse_error(s + " is not a double");
   }
 }
@@ -171,7 +171,7 @@ unit_scale::unit_scale(std::initializer_list<std::tuple<const std::string, doubl
   }
 }
 
-/* Note: field `unit' for the last element of parameter `units' should be nullptr. */
+/* Note: no warning is issued for unit-less values when `name' is empty. */
 double surf_parse_get_value_with_unit(const char* string, const unit_scale& units, const char* entity_kind,
                                       const std::string& name, const char* error_msg, const char* default_unit)
 {
@@ -183,10 +183,9 @@ double surf_parse_get_value_with_unit(const char* string, const unit_scale& unit
   if (ptr == string)
     surf_parse_error(std::string("cannot parse number:") + string);
   if (ptr[0] == '\0') {
-    if (res == 0)
-      return res; // Ok, 0 can be unit-less
-
-    XBT_WARN("Deprecated unit-less value '%s' for %s %s. %s", string, entity_kind, name.c_str(), error_msg);
+    // Ok, 0 can be unit-less
+    if (res != 0 && not name.empty())
+      XBT_WARN("Deprecated unit-less value '%s' for %s %s. %s", string, entity_kind, name.c_str(), error_msg);
     ptr = (char*)default_unit;
   }
   auto u = units.find(ptr);