diff --git a/translate.c b/translate.c
index e2e6324f40228627658926c526cdade1c9b1254f..fd8c82d069f1109fbb460117a0a130b22336f962 100755
--- a/translate.c
+++ b/translate.c
@@ -70,10 +70,11 @@ static int powerof(int d)
 
 void ast_translator_free_path(struct ast_trans_pvt *p)
 {
-	struct ast_trans_pvt *pl;
-	while(p) {
-		pl = p;
-		p = p->next;
+	struct ast_trans_pvt *pl, *pn;
+	pn = p;
+	while(pn) {
+		pl = pn;
+		pn = pn->next;
 		if (pl->state && pl->step->destroy)
 			pl->step->destroy(pl->state);
 		free(pl);