From: Miroslav Lichvar Date: Wed, 11 May 2022 09:04:52 +0000 (+0200) Subject: samplefilt: drop last sample in SPF_DropSamples() X-Git-Tag: 4.3-pre1~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e66f1df89d56983de0f7d1a70aa6e3ae0fe62730;p=thirdparty%2Fchrony.git samplefilt: drop last sample in SPF_DropSamples() When SPF_DropSamples() is called, don't keep the last sample to be retrieved by SPF_GetLastSample(). It should be kept only after filtering. --- diff --git a/samplefilt.c b/samplefilt.c index 9cb892d3..c3ee8b37 100644 --- a/samplefilt.c +++ b/samplefilt.c @@ -170,11 +170,21 @@ SPF_GetAvgSampleDispersion(SPF_Instance filter) /* ================================================== */ -void -SPF_DropSamples(SPF_Instance filter) +static void +drop_samples(SPF_Instance filter, int keep_last) { filter->index = -1; filter->used = 0; + if (!keep_last) + filter->last = -1; +} + +/* ================================================== */ + +void +SPF_DropSamples(SPF_Instance filter) +{ + drop_samples(filter, 0); } /* ================================================== */ @@ -405,7 +415,7 @@ SPF_GetFilteredSample(SPF_Instance filter, NTP_Sample *sample) if (!combine_selected_samples(filter, n, sample)) return 0; - SPF_DropSamples(filter); + drop_samples(filter, 1); return 1; } diff --git a/test/unit/samplefilt.c b/test/unit/samplefilt.c index 20e6febc..22df1259 100644 --- a/test/unit/samplefilt.c +++ b/test/unit/samplefilt.c @@ -103,6 +103,7 @@ test_unit(void) } else { SPF_DropSamples(filter); + TEST_CHECK(filter->last < 0); } TEST_CHECK(SPF_GetNumberOfSamples(filter) == 0);