fixed error handling for native C modules
diff --git a/src/packages/xdc/rov/Program.xs b/src/packages/xdc/rov/Program.xs
index 8ef6cfd..af441cd 100644
--- a/src/packages/xdc/rov/Program.xs
+++ b/src/packages/xdc/rov/Program.xs
@@ -369,6 +369,25 @@
/* Add the view to the module's viewMap */
modDesc.viewMap[tabName] = dataArr;
+
+ /*
+ * Check if there were any errors reported on any fields.
+ * Add any errors to the status table.
+ */
+ for (var i = 0; i < dataArr.length; i++) {
+ var view = dataArr[i];
+ for (var j = 0; j < view.elements.length; j++) {
+ for (var p in view.elements[j]) {
+ if (view.elements[j].$status[p]) {
+ /* Record status in the status table for reference */
+ addStatusEntry(modName, tabName, view.label, p,
+ view.elements[j].$status[p]);
+
+ error = true;
+ }
+ }
+ }
+ }
}
/*
* Otherwise, if the module does have instances, call the view function
@@ -510,9 +529,21 @@
/* Add the view to the module's viewMap */
modDesc.viewMap[tabName] = modDataView;
+ var error = false;
+
/* TODO - check for any errors and throw exception */
+ for (var i = 0; i < modDataView.elements.length; i++) {
+ var view = modDataView.elements[i];
+ for (var p in view) {
+ if (view.$status[p]) {
+ /* Record status in the status table for reference */
+ addStatusEntry(modName, tabName, "N/A", p, view.$status[p]);
+ error = true;
+ }
+ }
+ }
/*
- if (error) {
+ if (throwScanErrors && error && !tabName.match("Scan for")) {
throw (new Error("ROV detected errors in scan of '" + tabName +
"' tab for module " + modName + "."));
}