diff options
Diffstat (limited to 'mg2d.c')
-rw-r--r-- | mg2d.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -471,7 +471,9 @@ int mg2d_solve(MG2DContext *ctx) res_prev = s_root->residual_max; for (int i = 0; i < ctx->maxiter; i++) { - mg_solve_subgrid(ctx, root); + ret = mg_solve_subgrid(ctx, root); + if (ret < 0) + goto fail; res_cur = s_root->residual_max; @@ -491,8 +493,10 @@ int mg2d_solve(MG2DContext *ctx) res_prev = res_cur; } + ret = -EDOM; +fail: mg2di_log(&priv->logger, MG2D_LOG_ERROR, "The solver failed to converge\n"); - return -EDOM; + return ret; } static void mg_level_free(MG2DLevel **plevel) |