You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2008/12/07 21:17:45 UTC

svn commit: r724187 - /commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java

Author: luc
Date: Sun Dec  7 12:17:45 2008
New Revision: 724187

URL: http://svn.apache.org/viewvc?rev=724187&view=rev
Log:
fixed missing error checks

Modified:
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java?rev=724187&r1=724186&r2=724187&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java Sun Dec  7 12:17:45 2008
@@ -321,9 +321,26 @@
                 throw MathRuntimeException.createIllegalStateException("first {0} columns are not initialized yet",
                                                                        new Object[] { column });
             }
-            data = new double[subMatrix.length][subMatrix[0].length];
+            final int nRows = subMatrix.length;
+            if (nRows == 0) {
+                throw MathRuntimeException.createIllegalArgumentException("matrix must have at least one row",
+                                                                          null); 
+            }
+
+            final int nCols = subMatrix[0].length;
+            if (nCols == 0) {
+                throw MathRuntimeException.createIllegalArgumentException("matrix must have at least one column",
+                                                                          null); 
+            }
+            data = new double[subMatrix.length][nCols];
             for (int i = 0; i < data.length; ++i) {
-                System.arraycopy(subMatrix[i], 0, data[i], 0, subMatrix[i].length);
+                if (subMatrix[i].length != nCols) {
+                    throw MathRuntimeException.createIllegalArgumentException("some rows have length {0} while others have length {1}",
+                                                                              new Object[] {
+                                                                                  nCols, subMatrix[i].length
+                                                                              }); 
+                }
+                System.arraycopy(subMatrix[i], 0, data[i + row], column, nCols);
             }
         } else {
             super.setSubMatrix(subMatrix, row, column);