]> git.mxchange.org Git - flightgear.git/commitdiff
Additional checks, for waypoint role setting.
authorJames Turner <zakalawe@mac.com>
Wed, 24 Jul 2013 07:51:35 +0000 (08:51 +0100)
committerJames Turner <zakalawe@mac.com>
Wed, 24 Jul 2013 07:51:35 +0000 (08:51 +0100)
Added these while investigating a defect, which unfortunately still
remains elusive. But the checks are wise anyway.

src/Navaids/route.cxx
src/Scripting/NasalPositioned.cxx

index 6d6558a69e55e08fe7061ade87777773252be8b0..8d4eb4029a8b04a88306adb67b928ad704ddfd97 100644 (file)
@@ -91,6 +91,10 @@ bool Waypt::flag(WayptFlag aFlag) const
        
 void Waypt::setFlag(WayptFlag aFlag, bool aV)
 {
+    if (aFlag == 0) {
+        throw sg_range_exception("invalid waypoint flag set");
+    }
+    
   _flags = (_flags & ~aFlag);
   if (aV) _flags |= aFlag;
 }
index 9da830f31c2961c7c770b70cafa2b51a3067a7b5..fced59becc44b03c51c99a0e28175f8985768835 100644 (file)
@@ -1920,6 +1920,10 @@ static naRef f_createWP(naContext c, naRef me, int argc, naRef* args)
 // set waypt flags - approach, departure, pseudo, etc
   if (argc > argOffset) {
     WayptFlag f = wayptFlagFromString(naStr_data(args[argOffset++]));
+    if (f == 0) {
+      naRuntimeError(c, "createWP: bad waypoint role");
+    }
+      
     wpt->setFlag(f);
   }
   
@@ -1947,6 +1951,9 @@ static naRef f_createWPFrom(naContext c, naRef me, int argc, naRef* args)
   // set waypt flags - approach, departure, pseudo, etc
   if (argc > 1) {
     WayptFlag f = wayptFlagFromString(naStr_data(args[1]));
+    if (f == 0) {
+      naRuntimeError(c, "createWPFrom: bad waypoint role");
+    }
     wpt->setFlag(f);
   }
   
@@ -2116,6 +2123,10 @@ static naRef f_flightplan_clearWPType(naContext c, naRef me, int argc, naRef* ar
   }
   
   WayptFlag flag = wayptFlagFromString(naStr_data(args[0]));
+  if (flag == 0) {
+    naRuntimeError(c, "clearWPType: bad waypoint role");
+  }
+    
   fp->clearWayptsWithFlag(flag);
   return naNil();
 }