Forráskód Böngészése

Fixed a bug in range handling when the range has the same size as the element

Julius Pfrommer 9 éve
szülő
commit
c55dbbae34
1 módosított fájl, 2 hozzáadás és 2 törlés
  1. 2 2
      src/ua_types.c

+ 2 - 2
src/ua_types.c

@@ -562,11 +562,11 @@ testRangeWithVariant(const UA_Variant *v, const UA_NumericRange range, size_t *t
                      size_t *block, size_t *stride, size_t *first) {
     /* Test the integrity of the source variant dimensions */
     UA_Int32 dims_count = 1;
+    UA_Int32 elements = 1;
     const UA_Int32 *dims = &v->arrayLength; // default: the array has only one dimension
     if(v->arrayDimensionsSize > 0) {
         dims_count = v->arrayDimensionsSize;
         dims = v->arrayDimensions;
-        UA_Int32 elements = 1;
         for(UA_Int32 i = 0; i < dims_count; i++)
             elements *= dims[i];
         if(elements != v->arrayLength)
@@ -586,7 +586,7 @@ testRangeWithVariant(const UA_Variant *v, const UA_NumericRange range, size_t *t
     }
 
     /* Compute the block size and the position of the first element */
-    size_t b = 0, s = 0, f = 0;
+    size_t b = 1, s = elements, f = 0;
     size_t running_dimssize = 1; // elements per block of dimensions k to k_max
     UA_Boolean found_contiguous = UA_FALSE;
     for(UA_Int32 k = dims_count - 1; k >= 0; k--) {