diff --git a/main/data.c b/main/data.c
index 4c39362f58125348c0ac465f54e50bb27e31d14f..73a33661303d6989be1ffaea52b9cbf2edfceea1 100644
--- a/main/data.c
+++ b/main/data.c
@@ -1631,7 +1631,7 @@ static void data_filter_destructor(void *obj)
 {
 	struct data_filter *filter = obj, *globres;
 
-	AST_LIST_TRAVERSE(&(filter->glob_list), globres, list) {
+	while ((globres = AST_LIST_REMOVE_HEAD(&(filter->glob_list), list))) {
 		ao2_ref(globres, -1);
 	}