diff options
author | David Kalnischkies <david@kalnischkies.de> | 2016-08-12 10:02:28 +0200 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2016-08-12 11:12:10 +0200 |
commit | 379a36f43d3f4db4afa5ad4fb6f79b89824c999c (patch) | |
tree | 03820e0718fe0b888581c1738a61c2c6eba229c2 /apt-pkg/contrib/srvrec.cc | |
parent | 1cb047079aa2c26a8159d100348b7e69a49bc117 (diff) |
ensure a good clock() value for usage and tests
We use clock() as a very cheap way of getting a "random" value, but the
manpage warns that this could return -1, so we should be dealing with
this. Additionally, e.g. on hurd-i386 the value increases only slowly –
to slow for our fast running tests for randomness hence producing the
same range in both samples, so we introduce a simple busy-wait loop (as
clock is counting processor time used by the program) in the test which
delays the second sample just enough making our randomness a bit more
predictable.
Diffstat (limited to 'apt-pkg/contrib/srvrec.cc')
-rw-r--r-- | apt-pkg/contrib/srvrec.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/apt-pkg/contrib/srvrec.cc b/apt-pkg/contrib/srvrec.cc index be159bad9..327e59937 100644 --- a/apt-pkg/contrib/srvrec.cc +++ b/apt-pkg/contrib/srvrec.cc @@ -185,7 +185,7 @@ SrvRec PopFromSrvRecs(std::vector<SrvRec> &Recs) [&I](SrvRec const &J) { return I->priority != J.priority; }); // clock seems random enough. - I += clock() % std::distance(I, J); + I += std::max(static_cast<clock_t>(0), clock()) % std::distance(I, J); SrvRec const selected = std::move(*I); Recs.erase(I); |