[PATCH] lib/tevent: remove spectacularly complicated manual subtraction

Rusty Russell rusty at rustcorp.com.au
Wed Aug 26 02:00:32 MDT 2009


To be completely honest, I don't quite know whether to laugh or cry at
this one:

	1 + (0xFFFFFFFF & ~(s.seen - s.count))
	== 1 + (~(s.seen - s.count))		# s.seen, s.count are uint32_t
	== s.count - s.seen			# -A == ~A + 1

Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
---
 lib/tevent/tevent_signal.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/lib/tevent/tevent_signal.c b/lib/tevent/tevent_signal.c
index 4a58a8b..f64f317 100644
--- a/lib/tevent/tevent_signal.c
+++ b/lib/tevent/tevent_signal.c
@@ -70,10 +70,7 @@ static struct sig_state {
 */
 static uint32_t sig_count(struct sigcounter s)
 {
-	if (s.count >= s.seen) {
-		return s.count - s.seen;
-	}
-	return 1 + (0xFFFFFFFF & ~(s.seen - s.count));
+	return s.count - s.seen;
 }
 
 /*
-- 
1.6.0.4



More information about the samba-technical mailing list