Sfoglia il codice sorgente

Provide correct timeradd/timersup replacements

Bug caught and patch provided by Vektor. Fixes bug 4778.t
Sebastian Hahn 12 anni fa
parent
commit
da876aec63
2 ha cambiato i file con 9 aggiunte e 2 eliminazioni
  1. 7 0
      changes/timersub_bug
  2. 2 2
      src/common/compat.h

+ 7 - 0
changes/timersub_bug

@@ -0,0 +1,7 @@
+  o Major bugfixes:
+    - Provide correct replacements for the timeradd() and timersub() functions
+      for platforms that lack them (for example, windows). The timersub()
+      function is used when expiring circuits, timeradd() is currently unused.
+      Patch written by Vektor, who also reported the bug. Thanks! Bugfix
+      on 0.2.2.24-alpha/0.2.3.1-alpha, fixes bug 4778.
+

+ 2 - 2
src/common/compat.h

@@ -334,7 +334,7 @@ struct tm *tor_gmtime_r(const time_t *timep, struct tm *result);
 #define timeradd(tv1,tv2,tvout) \
   do {                                                  \
     (tvout)->tv_sec = (tv1)->tv_sec + (tv2)->tv_sec;    \
-    (tvout)->tv_usec = (tv2)->tv_usec + (tv2)->tv_usec; \
+    (tvout)->tv_usec = (tv1)->tv_usec + (tv2)->tv_usec; \
     if ((tvout)->tv_usec >= 1000000) {                  \
       (tvout)->tv_usec -= 1000000;                      \
       (tvout)->tv_sec++;                                \
@@ -348,7 +348,7 @@ struct tm *tor_gmtime_r(const time_t *timep, struct tm *result);
 #define timersub(tv1,tv2,tvout) \
   do {                                                  \
     (tvout)->tv_sec = (tv1)->tv_sec - (tv2)->tv_sec;    \
-    (tvout)->tv_usec = (tv2)->tv_usec - (tv2)->tv_usec; \
+    (tvout)->tv_usec = (tv1)->tv_usec - (tv2)->tv_usec; \
     if ((tvout)->tv_usec < 0) {                         \
       (tvout)->tv_usec += 1000000;                      \
       (tvout)->tv_sec--;                                \