diff options
Diffstat (limited to 'src/solver_conformity.c')
| -rw-r--r-- | src/solver_conformity.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/src/solver_conformity.c b/src/solver_conformity.c index d2b2d82..882d717 100644 --- a/src/solver_conformity.c +++ b/src/solver_conformity.c @@ -39,18 +39,24 @@ int solver_conformity(struct job **job, struct job_clist *q, int32_t resources)  {  	struct job *j;  	float conformity_cur; +	int ret;  	struct job *selected = NULL;  	float conformity_max = -1;  	CIRCLEQ_FOREACH (j, q, clist) { -		if (j->stale) { +		if (j->stale)  			continue; -		} else if (job_cost_recursive(j) > resources) { + +		ret = job_cost_recursive(j); +		if (ret < 0) +			return ret; + +		if (ret > resources) {  			job_stale_set(j);  			if (evanix_opts.solver_report) {  				printf("❌ refusing to build %s, cost: %d\n", -				       j->drv_path, job_cost_recursive(j)); +				       j->drv_path, ret);  			}  		}  	}  | 
