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; }