message: Fix nullptr dereference for matrix solve.
  If the `RHS` matrix in `A*X=RHS` is empty, then `X`
  is empty, so exit early.  Otherwise we end up trying
  to access an invalid entry, resulting in UB.  This
  is causing sanitizers to fail.
diff: @@ -88,7 +88,7 @@ class MatrixSolveLsOp : public LinearAlgebraOp<Scalar> {
  const int64 rows = matrix.rows();
  const int64 cols = matrix.cols();
  - if (rows == 0 || cols == 0) {
  + if (rows == 0 || cols == 0 || rhs.rows() == 0 || rhs.cols() == 0) {
  // The result is the empty matrix.
  return;
  }
  @@ -99,7 +99,7 @@ class MatrixSolveLsOp : public LinearAlgebraOp<Scalar> {
  // 1 / cond(matrix) > sqrt(std::numeric_limits<Scalar>::epsilon()).
  // This branch solves over- or underdetermined least-squares problems
  // via the normal equations and Cholesky decomposition.
  - if (matrix.rows() >= matrix.cols()) {
  + if (rows >= cols) {
  // Overdetermined case (rows >= cols): Solves the ordinary (possibly
  // regularized) least-squares problem
  // min || A * X - RHS ||_F^2 + l2_regularizer ||X||_F^2
  