Index: tol/btol/vmatrix_type/vmat_convert.cpp
===================================================================
--- tol/btol/vmatrix_type/vmat_convert.cpp	(revision 55b70915a471201eefaeac76580280ca0cd2023e)
+++ tol/btol/vmatrix_type/vmat_convert.cpp	(revision 2291fa77b4aa36e8baac91437147002153cb8159)
@@ -728,4 +728,9 @@
 {
   Delete();
+  if((nrow<0)||(ncol<0))
+  {
+    err_invalid_dimensions("Eye",nrow,ncol);
+    return;
+  }
   bool isCol = v.Columns()==1;
   bool isRow = v.Rows   ()==1;
@@ -770,4 +775,9 @@
 {
   Delete();
+  if((nrow<0)||(ncol<0))
+  {
+    err_invalid_dimensions("Eye",nrow,ncol);
+    return;
+  }
   bool lower = diag<=0;
   int k, n = Maximum(nrow, ncol);
@@ -805,4 +815,9 @@
 {
   Delete();
+  if((nrow<0)||(ncol<0))
+  {
+    err_invalid_dimensions("Eye",nrow,ncol);
+    return;
+  }
   switch(c) {
   case(ESC_blasRdense  ) :
@@ -824,4 +839,9 @@
 {
   Delete();
+  if((nrow<0)||(ncol<0))
+  {
+    err_invalid_dimensions("Zeros",nrow,ncol);
+    return;
+  }
   switch(c) {
   case(ESC_blasRdense  ) :
@@ -1048,4 +1068,9 @@
 {
   int i, j;
+  if((rows<0)||(cols<0))
+  {
+    err_invalid_dimensions("Sub",rows,cols);
+    return(-1);
+  }
   BArray<int> r(rows);
   BArray<int> c(cols);
@@ -1061,4 +1086,9 @@
 {
   BVMat aux;
+  if((rows<0)||(cols<0))
+  {
+    err_invalid_dimensions("Sub",rows,cols);
+    return(aux);
+  }
   Sub(i0,j0,rows,cols,aux);
   return(aux);
