Do not create a SparseCholesky object when not needed.

SchurComplementSolver implements a variant of ITERATIVE_SCHUR
when explicit_schur_complement is set to true. In this case
the SparseCholesky object should not be instantiated. Even
though there is no CPU cost, it can be the case that ITERATIVE_SCHUR
is being used when there are not sparse linear algebra libraries
are available, and this can result in a crash.

Change-Id: I349d5f79201782689b3ab0ccc2c5001804b44c7b
diff --git a/internal/ceres/schur_complement_solver.cc b/internal/ceres/schur_complement_solver.cc
index fa921b4..1a1becb 100644
--- a/internal/ceres/schur_complement_solver.cc
+++ b/internal/ceres/schur_complement_solver.cc
@@ -226,9 +226,11 @@
 SparseSchurComplementSolver::SparseSchurComplementSolver(
     const LinearSolver::Options& options)
     : SchurComplementSolver(options) {
-  sparse_cholesky_.reset(
-      SparseCholesky::Create(options.sparse_linear_algebra_library_type,
-                             options.use_postordering ? AMD : NATURAL));
+  if (options.type != ITERATIVE_SCHUR) {
+    sparse_cholesky_.reset(
+        SparseCholesky::Create(options.sparse_linear_algebra_library_type,
+                               options.use_postordering ? AMD : NATURAL));
+  }
 }
 
 SparseSchurComplementSolver::~SparseSchurComplementSolver() {