diff --git a/matlab/dynare_solve.m b/matlab/dynare_solve.m
index efac88c3a458fd11aac05d8c07298a5e9f28f242..adc7f02e42acdd81f7a42066dc1bbafd536c2314 100644
--- a/matlab/dynare_solve.m
+++ b/matlab/dynare_solve.m
@@ -229,9 +229,6 @@ elseif ismember(options.solve_algo, [2, 12, 4])
     fre = false;
     for i=length(r)-1:-1:1
         blocklength = r(i+1)-r(i);
-        if s(i+1)-s(i) ~= blocklength
-            error('DYNARE_SOLVE (solve_algo=2|4|12): the Dulmage-Mendelsohn decomposition returned a non-square block. This means that the Jacobian is singular. You may want to try another value for solve_algo.')
-        end
         if options.debug
             dprintf('DYNARE_SOLVE (solve_algo=2|4|12): solving block %u of size %u.', i, blocklength);
         end
diff --git a/mex/sources/block_trust_region/mexFunction.f08 b/mex/sources/block_trust_region/mexFunction.f08
index 512865c6e7ae2b0cca327a061e7f773667f5a3d0..1092d423336208cf625dd4bcc95310ae17e7eb77 100644
--- a/mex/sources/block_trust_region/mexFunction.f08
+++ b/mex/sources/block_trust_region/mexFunction.f08
@@ -207,9 +207,7 @@ subroutine mexFunction(nlhs, plhs, nrhs, prhs) bind(c, name='mexFunction')
        f_indices => blocks(i)%row_indices
        x_all => x
        if (size(x_indices) /= size(f_indices)) then
-          call mexErrMsgTxt("DYNARE_SOLVE (solve_algo=13|14): the Dulmage-Mendelsohn &
-               &decomposition returned a non-square block. This means that the &
-               &Jacobian is singular. You may want to try another value for solve_algo.")
+          call mexErrMsgTxt("Non-square block")
        end if
        x_block = x(x_indices)
        call trust_region_solve(x_block, matlab_fcn, info, tolx, tolf, maxiter, factor)