datetime: fix second parsing failure case when deserialising datetime
authorTim-Philipp Müller <tim@centricular.net>
Sat, 7 Jul 2012 15:01:41 +0000 (16:01 +0100)
committerTim-Philipp Müller <tim@centricular.net>
Sat, 7 Jul 2012 18:05:55 +0000 (19:05 +0100)
When we fail to parse the number of seconds, reset the value to -1
instead of passing some error value as seconds. Also, we can still
try to parse timezone information.

gst/gstdatetime.c

index 2784e44..e1905af 100644 (file)
@@ -771,16 +771,19 @@ gst_date_time_new_from_iso8601_string (const gchar * string)
   if (hour > 24 || *string != ':')
     goto ymd;
 
+  /* minute */
   minute = g_ascii_strtoull (string + 1, (gchar **) & string, 10);
   if (minute > 59)
     goto ymd;
 
+  /* second */
   if (*string == ':') {
     second = g_ascii_strtoull (string + 1, (gchar **) & string, 10);
     /* if we fail here, we still can reuse hour and minute. We
-     * will also fall of to tzoffset = 0.0 */
-    if (second > 59)
-      goto ymd_hms;
+     * will still attempt to parse any timezone information */
+    if (second > 59) {
+      second = -1.0;
+    }
   }
 
   if (*string == 'Z')