summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index aae0111..22e8ccc 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -395,8 +395,14 @@ void JSCDataModel::setEvent(const Event& event) {
}
Data JSCDataModel::evalAsData(const std::string& content) {
- JSValueRef result = evalAsValue(content);
- return getValueAsData(result);
+ try {
+ JSValueRef result = evalAsValue(content);
+ return getValueAsData(result);
+ } catch (ErrorEvent e) {
+ // test453 vs test554
+ throw e;
+// return Data(content, Data::INTERPRETED);
+ }
}
Data JSCDataModel::getAsData(const std::string& content) {
@@ -593,7 +599,7 @@ void JSCDataModel::setForeach(const std::string& item,
const std::string& index,
uint32_t iteration) {
if (!isDeclared(item)) {
- assign(item, Data());
+ assign(item, Data("null", Data::INTERPRETED));
}
// assign array element to item
std::stringstream ss;
@@ -710,7 +716,11 @@ void JSCDataModel::assign(const std::string& location, const Data& data) {
void JSCDataModel::init(const std::string& location, const Data& data) {
try {
- assign(location, data);
+ if (data.empty()) {
+ assign(location, Data("null", Data::INTERPRETED));
+ } else {
+ assign(location, data);
+ }
} catch (ErrorEvent e) {
// test 277
evalAsValue(location + " = undefined", true);