hlsdemux: Use locale-independent int/float parsing functions from GLib
authorSebastian Dröge <sebastian@centricular.com>
Mon, 10 Feb 2014 16:25:57 +0000 (17:25 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 10 Feb 2014 16:28:00 +0000 (17:28 +0100)
ext/hls/m3u8.c

index 63372239f874dbef489f6759a170854bb6e14781..8043ca1c53c18b4465aabecb84982e3aaed308a0 100644 (file)
@@ -110,20 +110,20 @@ static gboolean
 int_from_string (gchar * ptr, gchar ** endptr, gint * val)
 {
   gchar *end;
-  glong ret;
+  gint64 ret;
 
   g_return_val_if_fail (ptr != NULL, FALSE);
   g_return_val_if_fail (val != NULL, FALSE);
 
   errno = 0;
-  ret = strtol (ptr, &end, 10);
-  if ((errno == ERANGE && (ret == LONG_MAX || ret == LONG_MIN))
+  ret = g_ascii_strtoll (ptr, &end, 10);
+  if ((errno == ERANGE && (ret == G_MAXINT64 || ret == G_MININT64))
       || (errno != 0 && ret == 0)) {
     GST_WARNING ("%s", g_strerror (errno));
     return FALSE;
   }
 
-  if (ret > G_MAXINT) {
+  if (ret > G_MAXINT || ret < G_MININT) {
     GST_WARNING ("%s", g_strerror (ERANGE));
     return FALSE;
   }
@@ -146,7 +146,7 @@ double_from_string (gchar * ptr, gchar ** endptr, gdouble * val)
   g_return_val_if_fail (val != NULL, FALSE);
 
   errno = 0;
-  ret = strtod (ptr, &end);
+  ret = g_ascii_strtod (ptr, &end);
   if ((errno == ERANGE && (ret == HUGE_VAL || ret == -HUGE_VAL))
       || (errno != 0 && ret == 0)) {
     GST_WARNING ("%s", g_strerror (errno));