fixed using strtod() by resetting errno to detect overflow/underflow
[rocksndiamonds.git] / src / game_bd / bd_bdcff.c
index 20aba8f946e499a1f5032ff4b919984ebd0d315c..4c57c14e52988c3ce9c89d040c13aa4a7c74e297 100644 (file)
@@ -254,6 +254,7 @@ static boolean struct_set_property(gpointer str, const GdStructDescriptor *prop_
            break;
 
          case GD_TYPE_PROBABILITY:
+           errno = 0;  /* must be reset before calling strtod() to detect overflow/underflow */
            res = strtod(params[paramindex], NULL);
            if (errno == 0 && res >= 0 && res <= 1)
            {
@@ -268,6 +269,7 @@ static boolean struct_set_property(gpointer str, const GdStructDescriptor *prop_
            break;
 
          case GD_TYPE_RATIO:
+           errno = 0;  /* must be reset before calling strtod() to detect overflow/underflow */
            res = strtod (params[paramindex], NULL);
            if (errno == 0 && res >= 0 && res <= 1)
            {
@@ -884,7 +886,7 @@ boolean gd_caveset_load_from_bdcff(const char *contents)
 
     /* strip leading and trailing spaces AFTER checking if we are reading a map.
        map lines might begin or end with spaces */
-    g_strstrip(line);
+    stripString(line);
 
     if (reading_highscore)
     {
@@ -1194,12 +1196,12 @@ boolean gd_caveset_load_from_bdcff(const char *contents)
        object.element = cave->initial_border;
        object.fill_element = cave->initial_border;
 
-       cave->objects = list_prepend(cave->objects, getMemCopy(&object, sizeof(object)));
+       cave->objects = list_prepend(cave->objects, get_memcpy(&object, sizeof(object)));
 
        object.x1 = 19;
        object.y1 = 0;    /* 19, as it is also the border */
 
-       cave->objects = list_prepend(cave->objects, getMemCopy(&object, sizeof(object)));    /* another */
+       cave->objects = list_prepend(cave->objects, get_memcpy(&object, sizeof(object)));    /* another */
       }
     }
   }