Fixed size estimation for copyFrom/To vector in vx_matrix and vx_convolution wrappers

pull/8576/head
Vitaly Tuzov 8 years ago
parent fd93ae08b6
commit d873fe66ab
  1. 12
      3rdparty/openvx/include/ivx.hpp

@ -2508,10 +2508,10 @@ public:
{ {
if (!areTypesCompatible(TypeToEnum<T>::value, dataType())) if (!areTypesCompatible(TypeToEnum<T>::value, dataType()))
throw WrapperError(std::string(__func__) + "(): destination type is wrong"); throw WrapperError(std::string(__func__) + "(): destination type is wrong");
if (data.size() != size()) if (data.size()*sizeof(T) != size())
{ {
if (data.size() == 0) if (data.size() == 0)
data.resize(size()); data.resize(size()/sizeof(T));
else else
throw WrapperError(std::string(__func__) + "(): destination size is wrong"); throw WrapperError(std::string(__func__) + "(): destination size is wrong");
} }
@ -2522,7 +2522,7 @@ public:
{ {
if (!areTypesCompatible(TypeToEnum<T>::value, dataType())) if (!areTypesCompatible(TypeToEnum<T>::value, dataType()))
throw WrapperError(std::string(__func__) + "(): source type is wrong"); throw WrapperError(std::string(__func__) + "(): source type is wrong");
if (data.size() != size()) throw WrapperError(std::string(__func__) + "(): source size is wrong"); if (data.size()*sizeof(T) != size()) throw WrapperError(std::string(__func__) + "(): source size is wrong");
copyFrom(&data[0]); copyFrom(&data[0]);
} }
@ -2670,10 +2670,10 @@ public:
{ {
if (!areTypesCompatible(TypeToEnum<T>::value, dataType())) if (!areTypesCompatible(TypeToEnum<T>::value, dataType()))
throw WrapperError(std::string(__func__) + "(): destination type is wrong"); throw WrapperError(std::string(__func__) + "(): destination type is wrong");
if (data.size() != size()) if (data.size()*sizeof(T) != size())
{ {
if (data.size() == 0) if (data.size() == 0)
data.resize(size()); data.resize(size()/sizeof(T));
else else
throw WrapperError(std::string(__func__) + "(): destination size is wrong"); throw WrapperError(std::string(__func__) + "(): destination size is wrong");
} }
@ -2684,7 +2684,7 @@ public:
{ {
if (!areTypesCompatible(TypeToEnum<T>::value, dataType())) if (!areTypesCompatible(TypeToEnum<T>::value, dataType()))
throw WrapperError(std::string(__func__) + "(): source type is wrong"); throw WrapperError(std::string(__func__) + "(): source type is wrong");
if (data.size() != size()) throw WrapperError(std::string(__func__) + "(): source size is wrong"); if (data.size()*sizeof(T) != size()) throw WrapperError(std::string(__func__) + "(): source size is wrong");
copyFrom(&data[0]); copyFrom(&data[0]);
} }

Loading…
Cancel
Save