fix deallocation and accesses from ASAN detection (#4678)
diff --git a/aten/src/THC/generic/THCTensor.c b/aten/src/THC/generic/THCTensor.c
index b257a75..46a01f0 100644
--- a/aten/src/THC/generic/THCTensor.c
+++ b/aten/src/THC/generic/THCTensor.c
@@ -246,7 +246,7 @@
// if end of tensor size chunk, check view
if ((tensor_d == 0) ||
(tensor->size[tensor_d - 1] != 1 && tensor->stride[tensor_d - 1] != tensor_numel * chunk_base_stride)) {
- while ((view_numel < tensor_numel || view_size->data[view_d] == 1) && view_d >= 0) {
+ while (view_d >= 0 && (view_numel < tensor_numel || view_size->data[view_d] == 1)) {
new_stride->data[view_d] = view_numel * chunk_base_stride;
view_numel *= view_size->data[view_d];
view_d--;
diff --git a/torch/csrc/generic/Tensor.cpp b/torch/csrc/generic/Tensor.cpp
index 5487889..8118049 100644
--- a/torch/csrc/generic/Tensor.cpp
+++ b/torch/csrc/generic/Tensor.cpp
@@ -319,7 +319,7 @@
real *data = tensor->storage->data;
#else
size_t numel = THTensor_(numel)(LIBRARY_STATE tensor);
- std::unique_ptr<load_real> data_guard(new load_real[numel]);
+ std::unique_ptr<load_real[]> data_guard(new load_real[numel]);
load_real *data = data_guard.get();
#endif
THPObjectPtr final_sequence;