Skip to content
Snippets Groups Projects
Commit 50764b3d authored by Maxence Naud's avatar Maxence Naud
Browse files

[Fix] memory leak due to dim variable overflow

parent 026123ea
No related branches found
No related tags found
1 merge request!33[Fix] memory leak due to "dim" local variable overflow
Pipeline #32950 failed
...@@ -473,17 +473,18 @@ class Tensor : public Data, ...@@ -473,17 +473,18 @@ class Tensor : public Data,
std::string toString() { std::string toString() {
if (dims().empty()) { return "{}"; } if (dims().empty()) { return "{}"; }
std::string res; std::string res;
std::size_t dim = 0; std::size_t dim = 0;
std::size_t *dimVals = new std::size_t[nbDims()];
for (std::size_t i = 0; i < nbDims(); ++i) {
dimVals[i] = 0;
}
std::size_t counter = 0; std::size_t counter = 0;
res += "{\n"; if (nbDims()>=2) {
if (nbDims()>=2){ std::size_t *dimVals = new std::size_t[nbDims()];
for (std::size_t i = 0; i < nbDims(); ++i) {
dimVals[i] = 0;
}
// std::vector<std::size_t> dimVals = std::vector<std::size_t>(nbDims(), 0);
res += "{\n";
while (counter < mSize) { while (counter < mSize) {
std::string spaceString = std::string((dim+1)<<1,' '); std::string spaceString = std::string((dim+1)<<1,' ');
if (dim < nbDims()-2) { if (dim < nbDims()-2) {
...@@ -532,31 +533,35 @@ class Tensor : public Data, ...@@ -532,31 +533,35 @@ class Tensor : public Data,
} }
res += "\n"; res += "\n";
} }
if (dim == 0) {
break;
}
dimVals[dim--] = 0; dimVals[dim--] = 0;
dimVals[dim]++; dimVals[dim]++;
} }
} }
for(int i = static_cast<int>(dim); i>=0; --i) { delete[] dimVals;
for(int i = static_cast<int>(dim); i > 0; --i) {
res += std::string((dim+1)<<1,' ') + "}\n"; res += std::string((dim+1)<<1,' ') + "}\n";
} }
}else{ } else {
res += "{";
for (DimSize_t j = 0; j < dims()[0]; ++j) { for (DimSize_t j = 0; j < dims()[0]; ++j) {
switch (mDataType) switch (mDataType)
{ {
case DataType::Int32: case DataType::Int32:
res += " " + std::to_string(static_cast<int *>(mImpl->rawPtr())[j]) + ((j < dims()[0]-1) ? "," : "\n"); res += " " + std::to_string(static_cast<int *>(mImpl->rawPtr())[j]) + ((j < dims()[0]-1) ? "," : "");
break; break;
case DataType::Float64: case DataType::Float64:
res += " " + std::to_string(static_cast<double *>(mImpl->rawPtr())[j]) + ((j < dims()[0]-1) ? "," : "\n"); res += " " + std::to_string(static_cast<double *>(mImpl->rawPtr())[j]) + ((j < dims()[0]-1) ? "," : "");
break; break;
default: default:
res += " " + std::to_string(static_cast<float *>(mImpl->rawPtr())[j]) + ((j < dims()[0]-1) ? "," : "\n"); res += " " + std::to_string(static_cast<float *>(mImpl->rawPtr())[j]) + ((j < dims()[0]-1) ? "," : "");
break; break;
} }
} }
} }
res += "}"; res += "}";
return res; return res;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment