diff --git a/main/global_datastores.c b/main/global_datastores.c
index f43f4e2a4e28da5781779141c3c46b506a26bda5..9b87b2cb43dceaa2e61f2fd07f22add5a497684f 100644
--- a/main/global_datastores.c
+++ b/main/global_datastores.c
@@ -65,6 +65,7 @@ static void *dialed_interface_duplicate(void *data)
 		struct ast_dialed_interface *di2 = ast_calloc(1, sizeof(*di2) + strlen(di->interface));
 		if(!di2) {
 			AST_LIST_UNLOCK(old_list);
+			dialed_interface_destroy(new_list);
 			return NULL;
 		}
 		strcpy(di2->interface, di->interface);