diff options
| author | 2011-06-15 23:10:30 -0700 | |
|---|---|---|
| committer | 2011-06-15 23:10:30 -0700 | |
| commit | fb2f3a530f74f1dfa3ce3dc4079729b5e6607f43 (patch) | |
| tree | 9f36c697b138a2c5327655f39bed863f143fe878 /libs/utils/BlobCache.cpp | |
| parent | 0a4d51d581ac1f3fad1f63ffea07f2560b2788e3 (diff) | |
| parent | e04f826fef44b85108be85fb6d3a16c35a9e5c29 (diff) | |
Merge "Use rand() for MinGW"
Diffstat (limited to 'libs/utils/BlobCache.cpp')
| -rw-r--r-- | libs/utils/BlobCache.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libs/utils/BlobCache.cpp b/libs/utils/BlobCache.cpp index 1298fa733cb0..590576a8d477 100644 --- a/libs/utils/BlobCache.cpp +++ b/libs/utils/BlobCache.cpp @@ -31,9 +31,13 @@ BlobCache::BlobCache(size_t maxKeySize, size_t maxValueSize, size_t maxTotalSize mMaxTotalSize(maxTotalSize), mTotalSize(0) { nsecs_t now = systemTime(SYSTEM_TIME_MONOTONIC); +#ifdef _WIN32 + srand(now); +#else mRandState[0] = (now >> 0) & 0xFFFF; mRandState[1] = (now >> 16) & 0xFFFF; mRandState[2] = (now >> 32) & 0xFFFF; +#endif LOGV("initializing random seed using %lld", now); } @@ -148,11 +152,19 @@ size_t BlobCache::get(const void* key, size_t keySize, void* value, return valueBlobSize; } +long int BlobCache::blob_random() { +#ifdef _WIN32 + return rand(); +#else + return nrand48(mRandState); +#endif +} + void BlobCache::clean() { // Remove a random cache entry until the total cache size gets below half // the maximum total cache size. while (mTotalSize > mMaxTotalSize / 2) { - size_t i = size_t(nrand48(mRandState) % (mCacheEntries.size())); + size_t i = size_t(blob_random() % (mCacheEntries.size())); const CacheEntry& entry(mCacheEntries[i]); mTotalSize -= entry.getKey()->getSize() + entry.getValue()->getSize(); mCacheEntries.removeAt(i); |