From 3ac90ee866667671f49fabb0c34c9eabd4630558 Mon Sep 17 00:00:00 2001
From: Henning Stahlke <github@henningstahlke.de>
Date: Tue, 13 Jun 2017 21:05:41 +0200
Subject: [PATCH] YASIM: minor corrections and safeguards.

---
 src/FDM/YASim/Atmosphere.cpp | 2 +-
 src/FDM/YASim/ControlMap.cpp | 9 +++++----
 src/FDM/YASim/Vector.hpp     | 5 +++++
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/FDM/YASim/Atmosphere.cpp b/src/FDM/YASim/Atmosphere.cpp
index 5e751dbce..dd1649993 100644
--- a/src/FDM/YASim/Atmosphere.cpp
+++ b/src/FDM/YASim/Atmosphere.cpp
@@ -211,7 +211,7 @@ bool Atmosphere::test() {
     fprintf(stderr, "Columns = %d\n", numColumns);
     fprintf(stderr, "Rows = %d\n", rows);
     
-    for (int alt = 0; alt < maxTableIndex(); alt++) {
+    for (int alt = 0; alt <= maxTableIndex(); alt++) {
       float density = calcStdDensity(data[alt][PRESSURE], data[alt][TEMPERATURE]);
       float delta = data[alt][DENSITY] - density;
       fprintf(stderr, "%d : %f \n", alt, delta);
diff --git a/src/FDM/YASim/ControlMap.cpp b/src/FDM/YASim/ControlMap.cpp
index bf56615f9..9fb6d0985 100644
--- a/src/FDM/YASim/ControlMap.cpp
+++ b/src/FDM/YASim/ControlMap.cpp
@@ -132,11 +132,12 @@ void ControlMap::setInput(int input, float val)
 int ControlMap::getOutputHandle(void* obj, int type)
 {
     for(int i=0; i<_outputs.size(); i++) {
-	OutRec* o = (OutRec*)_outputs.get(i);
-	if(o->object == obj && o->type == type)
-	    return i;
+        OutRec* o = (OutRec*)_outputs.get(i);
+	    if(o->object == obj && o->type == type)
+	        return i;
     }
-    return 0;
+    fprintf(stderr, "ControlMap::getOutputHandle cannot find *%d, type %d \n", obj, type);
+    return -1;
 }
 
 void ControlMap::setTransitionTime(int handle, float time)
diff --git a/src/FDM/YASim/Vector.hpp b/src/FDM/YASim/Vector.hpp
index 33079558b..e1a493c80 100644
--- a/src/FDM/YASim/Vector.hpp
+++ b/src/FDM/YASim/Vector.hpp
@@ -1,6 +1,8 @@
 #ifndef _VECTOR_HPP
 #define _VECTOR_HPP
 
+#include <stdio.h>
+#include <cassert>
 //
 // Excruciatingly simple vector-of-pointers class.  Easy & useful.
 // No support for addition of elements anywhere but at the end of the
@@ -46,11 +48,14 @@ inline int Vector::add(void* p)
 
 inline void* Vector::get(int i) const
 {
+    assert(i >= 0 and i < _sz);
     return _array[i];
+
 }
 
 inline void Vector::set(int i, void* p)
 {
+    assert(i >= 0 and i < _sz);
     _array[i] = p;
 }