diff --git a/src/interfaces/ecpg/ecpglib/prepare.c b/src/interfaces/ecpg/ecpglib/prepare.c
index 0dcf736..6edff5c 100644
--- a/src/interfaces/ecpg/ecpglib/prepare.c
+++ b/src/interfaces/ecpg/ecpglib/prepare.c
@@ -754,7 +754,11 @@ ecpg_update_declare_statement(const char *declared_name, const char *cursor_name
 	/* Find the declared node by declared name */
 	p = ecpg_find_declared_statement(declared_name);
 	if (p)
+	{
+		if (p->cursor_name)
+			ecpg_free(p->cursor_name);
 		p->cursor_name = ecpg_strdup(cursor_name, lineno);
+	}
 }
 
 /*
