diff --git a/gst/udp/gstudpsrc.c b/gst/udp/gstudpsrc.c
index e0b3f7f12d1431af92c6b13620ca3a418d1f3e29..f957007468974c1dc8a991356e2475fa721a546b 100644
--- a/gst/udp/gstudpsrc.c
+++ b/gst/udp/gstudpsrc.c
@@ -1213,6 +1213,7 @@ receive_error:
   {
     gst_buffer_unmap (outbuf, &info);
     gst_memory_unmap (udpsrc->extra_mem, &extra_info);
+    g_clear_object (&saddr);
     if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_BUSY) ||
         g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
       g_clear_error (&err);
@@ -1226,6 +1227,7 @@ receive_error:
   }
 skip_error:
   {
+    g_clear_object (&saddr);
     GST_ELEMENT_ERROR (udpsrc, STREAM, DECODE, (NULL),
         ("UDP buffer to small to skip header"));
     return GST_FLOW_ERROR;