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);