From fef2ebd9db18892236520174eb8a964e68e56cc3 Mon Sep 17 00:00:00 2001 From: Scott R Charlton Date: Sat, 16 Nov 2013 06:26:16 +0000 Subject: [PATCH] Added extra check in IPhreeqc::GetSelectedOutputValue git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@8195 1feff8c3-07ed-0310-ac33-dd36852eb9cd --- IPhreeqc.cpp | 54 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/IPhreeqc.cpp b/IPhreeqc.cpp index 1635582e..08466d24 100644 --- a/IPhreeqc.cpp +++ b/IPhreeqc.cpp @@ -420,6 +420,8 @@ const char* IPhreeqc::GetSelectedOutputStringLine(int n) { return empty; } + // don't need to check CurrentSelectedOutputUserNumber since + // GetSelectedOutputStringLineCount will catch return this->SelectedOutputLinesMap[this->CurrentSelectedOutputUserNumber][n].c_str(); } @@ -430,7 +432,7 @@ int IPhreeqc::GetSelectedOutputStringLineCount(void)const { return (int) (*cit).second.size(); } - return (int)0; + return 0; } bool IPhreeqc::GetSelectedOutputStringOn(void)const @@ -440,6 +442,7 @@ bool IPhreeqc::GetSelectedOutputStringOn(void)const VRESULT IPhreeqc::GetSelectedOutputValue(int row, int col, VAR* pVAR) { + VRESULT v; this->ErrorReporter->Clear(); if (!pVAR) { @@ -448,26 +451,37 @@ VRESULT IPhreeqc::GetSelectedOutputValue(int row, int col, VAR* pVAR) return VR_INVALIDARG; } - VRESULT v = this->SelectedOutputMap[this->CurrentSelectedOutputUserNumber]->Get(row, col, pVAR); - switch (v) + std::map< int, CSelectedOutput* >::const_iterator ci = this->SelectedOutputMap.find(this->CurrentSelectedOutputUserNumber); + if (ci != this->SelectedOutputMap.end()) { - case VR_OK: - break; - case VR_OUTOFMEMORY: - this->AddError("GetSelectedOutputValue: VR_OUTOFMEMORY Out of memory.\n"); - break; - case VR_BADVARTYPE: - this->AddError("GetSelectedOutputValue: VR_BADVARTYPE pVar must be initialized(VarInit) and/or cleared(VarClear).\n"); - break; - case VR_INVALIDARG: - // not possible - break; - case VR_INVALIDROW: - this->AddError("GetSelectedOutputValue: VR_INVALIDROW Row index out of range.\n"); - break; - case VR_INVALIDCOL: - this->AddError("GetSelectedOutputValue: VR_INVALIDCOL Column index out of range.\n"); - break; + v = this->SelectedOutputMap[this->CurrentSelectedOutputUserNumber]->Get(row, col, pVAR); + switch (v) + { + case VR_OK: + break; + case VR_OUTOFMEMORY: + this->AddError("GetSelectedOutputValue: VR_OUTOFMEMORY Out of memory.\n"); + break; + case VR_BADVARTYPE: + this->AddError("GetSelectedOutputValue: VR_BADVARTYPE pVar must be initialized(VarInit) and/or cleared(VarClear).\n"); + break; + case VR_INVALIDARG: + // not possible + break; + case VR_INVALIDROW: + this->AddError("GetSelectedOutputValue: VR_INVALIDROW Row index out of range.\n"); + break; + case VR_INVALIDCOL: + this->AddError("GetSelectedOutputValue: VR_INVALIDCOL Column index out of range.\n"); + break; + } + } + else + { + char buffer[120]; + v = VR_INVALIDARG; + ::sprintf(buffer, "GetSelectedOutputValue: VR_INVALIDARG Invalid selected-output user number %d.\n", this->CurrentSelectedOutputUserNumber); + this->AddError(buffer); } this->update_errors(); return v;