diff --git a/src/input/input.c b/src/input/input.c
index 43965eaaad88e31f1b4e57b5d9499f4a32517548..6fa10f0ff80849b3451282532b436153b32fbc9c 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -1588,6 +1588,12 @@ static inline int ControlPop( input_thread_t *p_input,
     /* */
     const int i_index = ControlGetReducedIndexLocked( p_input );
 
+    for( int i = 0; i < i_index; ++i )
+    {
+        /* Release Reduced controls */
+        ControlRelease( p_sys->control[i].i_type, p_sys->control[i].val );
+    }
+
     /* */
     *pi_type = p_sys->control[i_index].i_type;
     *p_val   = p_sys->control[i_index].val;