diff --git a/local.c b/local.c index c5b6383..ad0aa34 100644 --- a/local.c +++ b/local.c @@ -349,13 +349,8 @@ LCL_CookTime(struct timeval *raw, struct timeval *cooked, double *err) void LCL_GetOffsetCorrection(struct timeval *raw, double *correction, double *err) { - double e; - /* Call system specific driver to get correction */ - (*drv_offset_convert)(raw, correction, &e); - - if (err) - *err = e; + (*drv_offset_convert)(raw, correction, err); } /* ================================================== */ diff --git a/sys_linux.c b/sys_linux.c index 48eeeb8..8567df9 100644 --- a/sys_linux.c +++ b/sys_linux.c @@ -800,7 +800,6 @@ get_offset_correction(struct timeval *raw, slow_slewing = 0; } } - update_slow_slew_error(offset); if (!nano_slewing) { noffset = 0; @@ -812,7 +811,6 @@ get_offset_correction(struct timeval *raw, nano_slewing = 0; } } - update_nano_slew_error(noffset, 0); if (fast_slewing) { UTI_DiffTimevalsToDouble(&fast_slew_duration, raw, &slew_start_tv); @@ -824,7 +822,12 @@ get_offset_correction(struct timeval *raw, } *corr = - (offset_register + fast_slew_remaining) + offset / 1.0e6 + noffset / 1.0e9; - *err = get_slow_slew_error(raw) + get_fast_slew_error(raw) + get_nano_slew_error();; + + if (err) { + update_slow_slew_error(offset); + update_nano_slew_error(noffset, 0); + *err = get_slow_slew_error(raw) + get_fast_slew_error(raw) + get_nano_slew_error();; + } return; } diff --git a/sys_netbsd.c b/sys_netbsd.c index 04b3f92..8c0cacc 100644 --- a/sys_netbsd.c +++ b/sys_netbsd.c @@ -271,7 +271,8 @@ get_offset_correction(struct timeval *raw, stop_adjust(); *corr = -offset_register; start_adjust(); - *err = 0.0; + if (err) + *err = 0.0; } /* ================================================== */ diff --git a/sys_solaris.c b/sys_solaris.c index 4024048..f75485a 100644 --- a/sys_solaris.c +++ b/sys_solaris.c @@ -300,7 +300,8 @@ get_offset_correction(struct timeval *raw, stop_adjust(); *corr = -offset_register; start_adjust(); - *err = 0.0; + if (err) + *err = 0.0; return; } diff --git a/sys_sunos.c b/sys_sunos.c index 4878715..6540fa6 100644 --- a/sys_sunos.c +++ b/sys_sunos.c @@ -287,7 +287,8 @@ get_offset_correction(struct timeval *raw, stop_adjust(); *corr = -offset_register; start_adjust(); - *err = 0.0; + if (err) + *err = 0.0; return; }