Преглед на файлове

Copy value before freeing it

Stefan Profanter преди 8 години
родител
ревизия
d4c4c4522a
променени са 1 файла, в които са добавени 6 реда и са изтрити 1 реда
  1. 6 1
      src/client/ua_client_highlevel.c

+ 6 - 1
src/client/ua_client_highlevel.c

@@ -434,7 +434,12 @@ UA_Client_readArrayDimensionsAttribute(UA_Client *client, const UA_NodeId nodeId
         goto cleanup;
     }
 
-    *outArrayDimensions = res->value.data;
+    *outArrayDimensions = UA_Array_new(res->value.arrayLength, &UA_TYPES[UA_TYPES_UINT32]);
+    retval = UA_Array_copy(res->value.data, res->value.arrayLength, (void **)&(*outArrayDimensions), &UA_TYPES[UA_TYPES_UINT32]);
+    if (retval != UA_STATUSCODE_GOOD) {
+        UA_free(res->value.data);
+        goto cleanup;
+    }
     *outArrayDimensionsSize = res->value.arrayLength;
     UA_free(res->value.data);
     res->value.data = NULL;