@@ -405,12 +405,21 @@ timelib_time *timelib_sub_wall(timelib_time *old_time, timelib_rel_time *interva
405
405
timelib_update_ts (t , NULL );
406
406
}
407
407
408
- do_range_limit (0 , 1000000 , 1000000 , & interval -> us , & interval -> s );
409
- t -> sse -= bias * timelib_hms_to_seconds (interval -> h , interval -> i , interval -> s );
410
- timelib_update_from_sse (t );
411
- t -> us -= interval -> us * bias ;
412
- if (bias == -1 && interval -> us > 0 ) {
413
- t -> sse ++ ;
408
+ if (interval -> us == 0 ) {
409
+ t -> sse -= bias * timelib_hms_to_seconds (interval -> h , interval -> i , interval -> s );
410
+ timelib_update_from_sse (t );
411
+ } else {
412
+ timelib_rel_time * temp_interval = timelib_rel_time_clone (interval );
413
+
414
+ do_range_limit (0 , 1000000 , 1000000 , & temp_interval -> us , & temp_interval -> s );
415
+ t -> sse -= bias * timelib_hms_to_seconds (temp_interval -> h , temp_interval -> i , temp_interval -> s );
416
+ timelib_update_from_sse (t );
417
+ t -> us -= temp_interval -> us * bias ;
418
+
419
+ timelib_do_normalize (t );
420
+ timelib_update_ts (t , NULL );
421
+
422
+ timelib_rel_time_dtor (temp_interval );
414
423
}
415
424
timelib_do_normalize (t );
416
425
}
0 commit comments