--- gstreamer/libs/gst/controller/gstcontroller.c.orig2	2006-09-25 15:33:37.000000000 +0200
+++ gstreamer/libs/gst/controller/gstcontroller.c	2006-09-25 16:08:46.000000000 +0200
@@ -757,12 +757,16 @@
   g_return_val_if_fail (GST_IS_CONTROLLER (self), FALSE);
   g_return_val_if_fail (property_name, FALSE);
 
+  for (node = timedvalues; node; node = g_slist_next (node)) {
+    tv = node->data;
+    g_return_val_if_fail (GST_CLOCK_TIME_IS_VALID (tv->timestamp), FALSE);
+  }
+  
   g_mutex_lock (self->lock);
   if ((prop = gst_controller_find_controlled_property (self, property_name))) {
     for (node = timedvalues; node; node = g_slist_next (node)) {
       tv = node->data;
       if (G_VALUE_TYPE (&tv->value) == prop->type) {
-        g_return_val_if_fail (GST_CLOCK_TIME_IS_VALID (tv->timestamp), FALSE);
         /* TODO copy the timed value or just link in? */
         prop->values =
             g_list_insert_sorted (prop->values, tv, gst_timed_value_compare);
