Selaa lähdekoodia

Removed bogus safeguards against having dataType nodes as typdefinitions for variables; fixed nscompiler side mistake.

ichrispa 7 vuotta sitten
vanhempi
commit
7b85c0e10e

+ 9 - 11
src/server/ua_services_nodemanagement.c

@@ -501,7 +501,7 @@ copyCommonVariableAttributes(UA_Server *server, UA_VariableNode *node,
     
     const UA_VariableTypeNode *vt =
         (const UA_VariableTypeNode*)UA_NodeStore_get(server->nodestore, typeDef);
-    if(!vt || (vt->nodeClass != UA_NODECLASS_VARIABLETYPE && vt->nodeClass != UA_NODECLASS_DATATYPE))
+    if(!vt || vt->nodeClass != UA_NODECLASS_VARIABLETYPE)
         return UA_STATUSCODE_BADTYPEDEFINITIONINVALID;
     
     /* Set the constraints */
@@ -515,16 +515,14 @@ copyCommonVariableAttributes(UA_Server *server, UA_VariableNode *node,
         retval = UA_VariableNode_setDataType(server, node, vt, &vt->dataType);
         
     node->valueRank = -2; /* allow all dimensions first */
-    if (vt->nodeClass != UA_NODECLASS_DATATYPE) {
-      retval |= UA_VariableNode_setArrayDimensions(server, node, vt,
-                                                  attr->arrayDimensionsSize,
-                                                  attr->arrayDimensions);
-
-      if(attr->valueRank != 0 || !UA_Variant_isScalar(&attr->value))
-          retval |= UA_VariableNode_setValueRank(server, node, vt, attr->valueRank);
-      else /* workaround common error where the valuerank is left as 0 */
-          retval |= UA_VariableNode_setValueRank(server, node, vt, vt->valueRank);
-    }
+    retval |= UA_VariableNode_setArrayDimensions(server, node, vt,
+                                                attr->arrayDimensionsSize,
+                                                attr->arrayDimensions);
+
+    if(attr->valueRank != 0 || !UA_Variant_isScalar(&attr->value))
+        retval |= UA_VariableNode_setValueRank(server, node, vt, attr->valueRank);
+    else /* workaround common error where the valuerank is left as 0 */
+        retval |= UA_VariableNode_setValueRank(server, node, vt, vt->valueRank);
     
     /* Set the value */
     UA_DataValue value;

+ 1 - 1
tools/pyUANamespace/open62541_MacroHelper.py

@@ -222,7 +222,7 @@ class open62541_MacroHelper():
           typeDefinition = r.target()
       if typeDefinition == None:
         # FIXME: We might want to resort to BaseXYTTypes here?
-        code.append("UA_NodeId typeDefinition = UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATATYPE);")
+        code.append("UA_NodeId typeDefinition = UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE);")
       else:
         code.append("UA_NodeId typeDefinition = " + str(self.getCreateNodeIDMacro(typeDefinition)) + ";")
     code.append("UA_NodeId parentNodeId = " + str(self.getCreateNodeIDMacro(parentNode)) + ";")