summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2012-10-02 22:30:02 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-10-05 14:49:41 (GMT)
commit63c364652d58fc5b92cd9da628e6db164661ee4e (patch)
tree80c61c001503eb7f294fee87affb83018ae484f2 /src
parentb35fd0298c0029c17b2377550217e2cd58b4b229 (diff)
downloadpowder-63c364652d58fc5b92cd9da628e6db164661ee4e.zip
powder-63c364652d58fc5b92cd9da628e6db164661ee4e.tar.gz
prevent setting invalid types, fix setting type to "NONE", "C4", & "C5"
Diffstat (limited to 'src')
-rw-r--r--src/cat/CommandInterface.cpp8
-rw-r--r--src/cat/TPTScriptInterface.cpp6
2 files changed, 10 insertions, 4 deletions
diff --git a/src/cat/CommandInterface.cpp b/src/cat/CommandInterface.cpp
index 240e7e4..3ebc795 100644
--- a/src/cat/CommandInterface.cpp
+++ b/src/cat/CommandInterface.cpp
@@ -96,16 +96,16 @@ int CommandInterface::GetParticleType(std::string type)
Element * elements = m->GetSimulation()->elements;
// alternative names for some elements
- if (strcasecmp(txt,"C4")==0) i = PT_PLEX;
- else if (strcasecmp(txt,"C5")==0) i = PT_C5;
- else if (strcasecmp(txt,"NONE")==0) i = PT_NONE;
+ if (strcasecmp(txt,"C4")==0) return PT_PLEX;
+ else if (strcasecmp(txt,"C5")==0) return PT_C5;
+ else if (strcasecmp(txt,"NONE")==0) return PT_NONE;
for (i=1; i<PT_NUM; i++) {
if (strcasecmp(txt, elements[i].Name)==0 && elements[i].Enabled)
{
return i;
}
}
- return i;
+ return -1;
}
std::string CommandInterface::GetLastError()
diff --git a/src/cat/TPTScriptInterface.cpp b/src/cat/TPTScriptInterface.cpp
index 9cfba07..2f250a5 100644
--- a/src/cat/TPTScriptInterface.cpp
+++ b/src/cat/TPTScriptInterface.cpp
@@ -211,9 +211,15 @@ AnyType TPTScriptInterface::tptS_set(std::deque<std::string> * words)
if(value.GetType() == TypeNumber)
newValue = ((NumberType)value).Value();
else if(value.GetType() == TypeString)
+ {
newValue = GetParticleType(((StringType)value).Value());
+ if (newValue < 0 || newValue >= PT_NUM)
+ throw GeneralException("Invalid element");
+ }
else
throw GeneralException("Invalid value for assignment");
+ if (property.Value() == "type" && (newValue < 0 || newValue >= PT_NUM))
+ throw GeneralException("Invalid element");
if(selector.GetType() == TypePoint || selector.GetType() == TypeNumber)
{