]> git.sur5r.net Git - openldap/commitdiff
make sure unsigned time_t doesn't hurt (follow-on to ITS#4872)
authorPierangelo Masarati <ando@openldap.org>
Sat, 17 Mar 2007 14:45:41 +0000 (14:45 +0000)
committerPierangelo Masarati <ando@openldap.org>
Sat, 17 Mar 2007 14:45:41 +0000 (14:45 +0000)
servers/slapd/daemon.c

index 9f86d3d13035d64fe8cf4aec1f7afd065ed3627e..9a3eb6b5679d73e3af4c6ca7561a6c9e95344028 100644 (file)
@@ -2113,8 +2113,14 @@ slapd_daemon_task(
                ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );
 
                if ( rtask && cat.tv_sec ) {
-                       time_t diff = difftime( cat.tv_sec, now );
-                       if ( diff == 0 ) diff = tdelta;
+                       /* NOTE: diff __should__ always be >= 0,
+                        * AFAI understand; however (ITS#4872),
+                        * time_t might be unsigned in some systems,
+                        * while difftime() returns a double */
+                       double diff = difftime( cat.tv_sec, now );
+                       if ( diff <= 0 ) {
+                               diff = tdelta;
+                       }
                        if ( tvp == NULL || diff < tv.tv_sec ) {
                                tv.tv_sec = diff;
                                tv.tv_usec = 0;