Use ParameterBlock::IsConstant in BlockJacobianWriter::CreateJacobian Replace the check residual_block->parameter_blocks()[j]->index() != -1 with !residual_block->parameter_blocks()[j]->IsConstant() to match the loop immediately below it. Thanks to @jwmak for reporting this. Fixes https://github.com/ceres-solver/ceres-solver/issues/971 Change-Id: Ic2d900e04c42b3c680655a3fdfd39f7e540d2349
diff --git a/internal/ceres/block_jacobian_writer.cc b/internal/ceres/block_jacobian_writer.cc index 34cdc1b..7e416ff 100644 --- a/internal/ceres/block_jacobian_writer.cc +++ b/internal/ceres/block_jacobian_writer.cc
@@ -234,7 +234,7 @@ const int num_parameter_blocks = residual_block->NumParameterBlocks(); int num_active_parameter_blocks = 0; for (int j = 0; j < num_parameter_blocks; ++j) { - if (residual_block->parameter_blocks()[j]->index() != -1) { + if (!residual_block->parameter_blocks()[j]->IsConstant()) { num_active_parameter_blocks++; } }