From e66f1df89d56983de0f7d1a70aa6e3ae0fe62730 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Wed, 11 May 2022 11:04:52 +0200 Subject: [PATCH] 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. --- samplefilt.c | 16 +++++++++++++--- test/unit/samplefilt.c | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/samplefilt.c b/samplefilt.c index 9cb892d..c3ee8b3 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 20e6feb..22df125 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);