lib/tevent: remove spectacularly complicated manual subtraction
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 26 Aug 2009 08:00:32 +0000 (17:30 +0930)
committerKarolin Seeger <kseeger@samba.org>
Wed, 9 Sep 2009 10:27:17 +0000 (12:27 +0200)
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@rustcorp.com.au>
(cherry picked from commit 4279879c9847ca069527e11ca934b8906009cad8)

lib/tevent/tevent_signal.c

index f07de83a5ec43aa518f2d4c9d6744dcc0d995a83..429995318be8787bcbd664b804fa76c03b69037a 100644 (file)
@@ -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;
 }
 
 /*