|  | @@ -207,12 +207,20 @@ testcase_run_forked_(const struct testgroup_t *group,
 | 
	
		
			
				|  |  |  		r = (int)read(outcome_pipe[0], b, 1);
 | 
	
		
			
				|  |  |  		if (r == 0) {
 | 
	
		
			
				|  |  |  			printf("[Lost connection!] ");
 | 
	
		
			
				|  |  | -			return 0;
 | 
	
		
			
				|  |  | +			return FAIL;
 | 
	
		
			
				|  |  |  		} else if (r != 1) {
 | 
	
		
			
				|  |  |  			perror("read outcome from pipe");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		waitpid(pid, &status, 0);
 | 
	
		
			
				|  |  | +		r = waitpid(pid, &status, 0);
 | 
	
		
			
				|  |  |  		close(outcome_pipe[0]);
 | 
	
		
			
				|  |  | +		if (r == -1) {
 | 
	
		
			
				|  |  | +			perror("waitpid");
 | 
	
		
			
				|  |  | +			return FAIL;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +                if (! WIFEXITED(status) || WEXITSTATUS(status) != 0) {
 | 
	
		
			
				|  |  | +			printf("[did not exit cleanly.]");
 | 
	
		
			
				|  |  | +			return FAIL;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  		return b[0]=='Y' ? OK : (b[0]=='S' ? SKIP : FAIL);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  #endif
 |