From: Simon Wilkinson Date: Sat, 18 Jun 2011 10:48:45 +0000 (+0100) Subject: rx: Make clock_Add correctly add to itself X-Git-Tag: upstream/1.6.0.pre7^2~34 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=8cc356cb64831a9aa860f53ec8ad4c20951af934;p=packages%2Fo%2Fopenafs.git rx: Make clock_Add correctly add to itself With the existing clock_Add code, the following: struct clock a = {2, 800000}; clock_Add(&a, &a); gives a clock value of {6, 600000}, rather than the expected {5, 60000}. This is because the ordering of instructions leads it to double count the carry on the seconds field. Reorder the instructions so that the carry is correctly applied. Reviewed-on: http://gerrit.openafs.org/4864 Reviewed-by: Derrick Brashear Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman (cherry picked from commit 784babbea1247660f39463403233589a74c6e73b) Change-Id: I1e97e9734d04f898dabad59a88afc929d8888e90 Reviewed-on: http://gerrit.openafs.org/4936 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/rx/rx_clock.h b/src/rx/rx_clock.h index 483bb07aa..2bdc0b81e 100644 --- a/src/rx/rx_clock.h +++ b/src/rx/rx_clock.h @@ -128,11 +128,11 @@ extern int clock_nUpdates; /* Add time c2 to time c1. Both c2 and c1 must be positive times. */ #define clock_Add(c1, c2) \ BEGIN \ + (c1)->sec += (c2)->sec; \ if (((c1)->usec += (c2)->usec) >= 1000000) { \ (c1)->usec -= 1000000; \ (c1)->sec++; \ } \ - (c1)->sec += (c2)->sec; \ END #define USEC(cp) (((cp)->sec * 1000000) + (cp)->usec)