const gchar *pos = NULL;
const gchar *next;
gchar *cur_str, *endptr;
-
guint flags = 0;
guint mask = 0;
guint val;
else {
val = strtoul (cur_str, &endptr, 0);
/* direct numeric value */
- if (endptr == NULL || *endptr != '\0')
- val = 0; /* Invalid numeric, ignore it */
+ if (endptr == NULL || *endptr != '\0') {
+ g_free (cur_str);
+ return FALSE; /* Invalid numeric or string we can't convert */
+ }
}
g_free (cur_str);
"0",
"GST_SEEK_FLAG_NONE",
"GST_SEEK_FLAG_FLUSH",
+ "0xf",
+ "15",
"GST_SEEK_FLAG_FLUSH+GST_SEEK_FLAG_ACCURATE",
};
GstSeekFlags results[] = {
GST_SEEK_FLAG_NONE,
GST_SEEK_FLAG_NONE,
GST_SEEK_FLAG_FLUSH,
+ 0xf,
+ 15,
GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
};
int i;
"resulting value is %d, not %d, for string %s (%d)",
g_value_get_flags (&value), results[i], strings[i], i);
}
+
+ fail_if (gst_value_deserialize (&value, "foo"),
+ "flag deserializing for bogus value should have failed!");
+ fail_if (gst_value_deserialize (&value, "GST_SEEK_FLAG_FLUSH+foo"),
+ "flag deserializing for bogus value should have failed!");
+ fail_if (gst_value_deserialize (&value,
+ "GST_SEEK_FLAG_FLUSH+foo+GST_SEEK_FLAG_ACCURATE"),
+ "flag deserializing for bogus value should have failed!");
}
GST_END_TEST;