diff --git a/lib/atc/SparseMatrix-inl.h b/lib/atc/SparseMatrix-inl.h
index 8d6aec78dca94f04503caf662761ff203d4e75e7..f70dd0361d3cf52e519fef06abc07f0518c86b21 100644
--- a/lib/atc/SparseMatrix-inl.h
+++ b/lib/atc/SparseMatrix-inl.h
@@ -67,9 +67,9 @@ void SparseMatrix<T>::_create(INDEX size, INDEX nrows)
   // assign memory to hold matrix
   try
   {
-    _val = (_size*nrows) ? new T     [_size]        : NULL;
-    _ia  = (_size*nrows) ? new INDEX [_nRowsCRS+1]  : NULL;
-    _ja  = (_size*nrows) ? new INDEX [_size]        : NULL;
+    _val = (_size && nrows) ? new T     [_size]        : NULL;
+    _ia  = (_size && nrows) ? new INDEX [_nRowsCRS+1]  : NULL;
+    _ja  = (_size && nrows) ? new INDEX [_size]        : NULL;
   }
   catch (std::exception &e)
   {