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;