From 565055b9cb87140c38e269e4a4cc16393511fd3a Mon Sep 17 00:00:00 2001
From: legoboyvdlp R <legoboyvdlp@gmail.com>
Date: Mon, 8 Jun 2020 17:05:04 +0100
Subject: [PATCH] Reset variables

---
 Nasal/MCDU/ARRIVAL.nas | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/Nasal/MCDU/ARRIVAL.nas b/Nasal/MCDU/ARRIVAL.nas
index 474ac605..e952f469 100644
--- a/Nasal/MCDU/ARRIVAL.nas
+++ b/Nasal/MCDU/ARRIVAL.nas
@@ -325,6 +325,10 @@ var arrivalPage = {
 		if (me.arrAirport == nil) {
 			me.arrAirport = findAirportsByICAO(left(me.id, 4));
 		}
+		
+		me.approaches = [];
+		me._approaches = nil;
+		
 		me._approaches = me.arrAirport[0].getApproachList();
 		me.approaches = sort(me._approaches,func(a,b) cmp(a,b));
 		if (me.approaches == nil or size(me.approaches) == 0) {
@@ -440,6 +444,10 @@ var arrivalPage = {
 		if (me.arrAirport == nil) {
 			me.arrAirport = findAirportsByICAO(left(me.id, 4));
 		}
+		
+		me.stars = [];
+		me._stars = nil;
+		
 		if (me.selectedApproach != nil) {
 			me._stars = me.arrAirport[0].stars(me.selectedApproach.runways[0]);
 		} else {
@@ -497,6 +505,8 @@ var arrivalPage = {
 		if (me.selectedApproach == nil or me.activePage != 2) {
 			return;
 		}
+		me.vias = [];
+		me._vias = nil;
 		me._vias = me.selectedApproach.transitions;
 		me.vias = sort(me._vias, func(a,b) cmp(a,b));
 		append(me.vias, "NO VIA");
@@ -578,10 +588,15 @@ var arrivalPage = {
 		if (me.arrAirport == nil) {
 			me.arrAirport = findAirportsByICAO(left(me.id, 4));
 		}
+
+		me.clearTransitions();
 		if (me.selectedSTAR == nil or me.selectedSTAR == "NO STAR") {
-			me.clearTransitions();
+			append(me.transitions, "NO TRANS");
 			return;
 		}
+		
+		me.transitions = [];
+		me._transitions = nil;
 		me._transitions = me.arrAirport[0].getStar(me.selectedSTAR).transitions;
 		me.transitions = sort(me._transitions,func(a,b) cmp(a,b));
 		append(me.transitions, "NO TRANS");
@@ -828,21 +843,18 @@ var arrivalPage = {
 	arrPushbuttonRight: func(index) {
 		if (size(me.transitions) >= (index - 2)) {
 			if (!dirToFlag) {
-				if (me.transitions[index - 3] == "NO TRANS") {
-					me.makeTmpy();
-					fmgc.flightPlanController.flightplans[me.computer].star_trans = nil;
-					isNoTrans[me.computer] = 1;
-					me.updateActiveTransitions();
-					me.updateTransitions();
-					fmgc.flightPlanController.flightPlanChanged(me.computer);
-				} else {
-					me.selectedTransition = me.transitions[index - 3];
-					me.makeTmpy();
+				me.selectedTransition = me.transitions[index - 3];
+				me.makeTmpy();
+				if (me.selectedTransition != "NO TRANS") {
+					isNoTrans[me.computer] = 0;
 					fmgc.flightPlanController.flightplans[me.computer].star_trans = me.selectedTransition;
-					me.updateActiveTransitions();
-					me.updateTransitions();
-					fmgc.flightPlanController.flightPlanChanged(me.computer);
+				} else {
+					isNoTrans[me.computer] = 1;
+					fmgc.flightPlanController.flightplans[me.computer].star_trans = nil;
 				}
+				me.updateActiveTransitions();
+				me.updateTransitions();
+				fmgc.flightPlanController.flightPlanChanged(me.computer);
 			} else {
 				mcdu_message(me.computer, "DIR TO IN PROGRESS");
 			}