diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c
index 3af33a1e20a71a2c5f6d822e661e88d43301d628..5997640341a31f05d7241fa72ddf5a2007d25e84 100644
--- a/res/res_pjsip_pubsub.c
+++ b/res/res_pjsip_pubsub.c
@@ -982,6 +982,7 @@ static int build_resource_tree(struct ast_sip_endpoint *endpoint, const struct a
 
 	tree->root = tree_node_alloc(resource, &visited, list->full_state);
 	if (!tree->root) {
+		AST_VECTOR_FREE(&visited);
 		return 500;
 	}