diff options
author | Stefan Radomski <github@mintwerk.de> | 2017-05-29 13:45:06 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2017-05-29 13:45:06 (GMT) |
commit | 91c81948221cac182e6f64a939983af2bb7a91b0 (patch) | |
tree | 81458a9db1f4664df4896ee8fc4a6d74ba8551c7 /src | |
parent | 4799b35d2457f1cfc746701ea347c89ae9887ca9 (diff) | |
download | uscxml-91c81948221cac182e6f64a939983af2bb7a91b0.zip uscxml-91c81948221cac182e6f64a939983af2bb7a91b0.tar.gz uscxml-91c81948221cac182e6f64a939983af2bb7a91b0.tar.bz2 |
Fixed issue 141
Diffstat (limited to 'src')
4 files changed, 10 insertions, 3 deletions
diff --git a/src/uscxml/debug/InterpreterIssue.cpp b/src/uscxml/debug/InterpreterIssue.cpp index a4d8841..346c0f6 100644 --- a/src/uscxml/debug/InterpreterIssue.cpp +++ b/src/uscxml/debug/InterpreterIssue.cpp @@ -147,10 +147,16 @@ std::list<InterpreterIssue> InterpreterIssue::forInterpreter(InterpreterImpl* in // some things we need to prepare first if (interpreter->_factory == NULL) interpreter->_factory = Factory::getInstance(); - interpreter->setupDOM(); std::list<InterpreterIssue> issues; + try { + interpreter->setupDOM(); + } catch(Event e) { + InterpreterIssue issue("Could not setup SCXML DOM: " + e.data.asJSON(), NULL, InterpreterIssue::USCXML_ISSUE_FATAL); + issues.push_back(issue); + } + if (!interpreter->_scxml) { InterpreterIssue issue("No SCXML element to be found", NULL, InterpreterIssue::USCXML_ISSUE_FATAL); issues.push_back(issue); diff --git a/src/uscxml/interpreter/InterpreterImpl.cpp b/src/uscxml/interpreter/InterpreterImpl.cpp index f7a46fc..bc8d2b9 100644 --- a/src/uscxml/interpreter/InterpreterImpl.cpp +++ b/src/uscxml/interpreter/InterpreterImpl.cpp @@ -315,6 +315,7 @@ SCXML_STOP_SEARCH: XERCESC_NS::DOMText* scriptText = _document->createTextNode(X(contents)); XERCESC_NS::DOMNode* newNode = _document->importNode(scriptText, true); script->appendChild(newNode); + script->removeAttribute(kXMLCharSource); // remove attribute for validation: see issue 141 } } diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp index 4203305..921f4cf 100644 --- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp +++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp @@ -583,7 +583,7 @@ Data JSCDataModel::getValueAsData(const JSValueRef value) { char* buf = new char[maxSize]; JSStringGetUTF8CString(stringValue, buf, maxSize); std::string property(buf); - if (!isNumeric(property.c_str(), 10)) + if (!isInteger(property.c_str(), 10)) isArray = false; propertySet.insert(property); //JSStringRelease(stringValue); // JSPropertyNameArrayRelease does the job it seems diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp index de3078b..4f78e7d 100644 --- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp +++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp @@ -163,7 +163,7 @@ static luabridge::LuaRef getDataAsLua(lua_State* _luaState, const Data& data) { luaData = luabridge::newTable(_luaState); std::map<std::string, Data>::const_iterator compoundIter = data.compound.begin(); while(compoundIter != data.compound.end()) { - if (isNumeric(compoundIter->first.c_str(), 10) && strTo<size_t>(compoundIter->first) > 0) { + if (isInteger(compoundIter->first.c_str(), 10) && strTo<size_t>(compoundIter->first) > 0) { // it makes a difference whether we pass a numeric string or a proper number! luaData[strTo<size_t>(compoundIter->first)] = getDataAsLua(_luaState, compoundIter->second); } else { |