dc: make 4 % 0 emit error messgaes and set result to 0
function old new delta mod 105 136 +31 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		| @@ -94,13 +94,18 @@ static void mod(void) | ||||
| { | ||||
| 	data_t d = pop(); | ||||
|  | ||||
| 	//if (d == 0) { | ||||
| 	//	bb_error_msg("remainder by zero"); | ||||
| 	//	pop(); | ||||
| 	//	push(0); | ||||
| 	//	return; | ||||
| 	//} | ||||
| 	//^^^^ without this, we simply get SIGFPE and die | ||||
| 	/* compat with dc (GNU bc 1.07.1) 1.4.1: | ||||
| 	 * $ dc -e '4 0 % p' | ||||
| 	 * dc: remainder by zero | ||||
| 	 * 0 | ||||
| 	 */ | ||||
| 	if (d == 0) { | ||||
| 		bb_error_msg("remainder by zero"); | ||||
| 		pop(); | ||||
| 		push(0); | ||||
| 		return; | ||||
| 	} | ||||
| 	/* ^^^^ without this, we simply get SIGFPE and die */ | ||||
|  | ||||
| 	push((data_t) pop() % d); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user