From 358466a70079aa219e610f061df763779d90b04d Mon Sep 17 00:00:00 2001 From: r-lyeh Date: Sat, 9 Apr 2022 11:02:41 +0200 Subject: [PATCH] v1.0.4: Fix potential threaded issues (fix #18, PR #39) and a socket leak (fix #38) --- README.md | 3 ++- sole.hpp | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 699de10..2fbf008 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -sole +sole ==== - Sole is a lightweight C++11 library to generate universally unique identificators (UUID). @@ -73,6 +73,7 @@ uuid v4 rebuilt : bdd55e2f-6f6b-4088-8703-ddedba9456a2 -> version=4,randbits=bdd - clang/g++ users: both `-std=c++11` and `-lrt` may be required when compiling `sole.cpp` ### Changelog +- v1.0.4 (2022/04/09): Fix potential threaded issues (fix #18, PR #39) and a socket leak (fix #38) - v1.0.3 (2022/01/17): Merge fixes by @jasonwinterpixel(emscripten) + @jj-tetraquark(get_any_mac) - v1.0.2 (2021/03/16): Merge speed improvements by @vihangm - v1.0.1 (2017/05/16): Improve UUID4 and base62 performance; Fix warnings diff --git a/sole.hpp b/sole.hpp index 0658553..8673774 100644 --- a/sole.hpp +++ b/sole.hpp @@ -54,7 +54,8 @@ // public API -#define SOLE_VERSION "1.0.3" /* (2022/01/17): Merge fixes by @jasonwinterpixel(emscripten) + @jj-tetraquark(get_any_mac) +#define SOLE_VERSION "1.0.4" /* (2022/04/09): Fix potential threaded issues (fix #18, PR #39) and a socket leak (fix #38) +#define SOLE_VERSION "1.0.3" // (2022/01/17): Merge fixes by @jasonwinterpixel(emscripten) + @jj-tetraquark(get_any_mac) #define SOLE_VERSION "1.0.2" // (2021/03/16): Merge speed improvements by @vihangm #define SOLE_VERSION "1.0.1" // (2017/05/16): Improve UUID4 and base62 performance; fix warnings #define SOLE_VERSION "1.0.0" // (2016/02/03): Initial semver adherence; Switch to header-only; Remove warnings */ @@ -601,7 +602,7 @@ namespace sole { int s = socket(PF_INET, SOCK_DGRAM, 0); if (s == -1) continue; - if (std::strcmp("lo", ifap->ifa_name) == 0) continue; // loopback address is zero + if (std::strcmp("lo", ifap->ifa_name) == 0) { close(s); continue;} // loopback address is zero std::strcpy(ifr.ifr_name, ifap->ifa_name); int rc = ioctl(s, SIOCGIFHWADDR, &ifr); @@ -664,8 +665,8 @@ namespace sole { // UUID implementations inline uuid uuid4() { - static std::random_device rd; - static std::uniform_int_distribution dist(0, (uint64_t)(~0)); + static $msvc(__declspec(thread)) $melse(__thread) std::random_device rd; + static $msvc(__declspec(thread)) $melse(__thread) std::uniform_int_distribution dist(0, (uint64_t)(~0)); uuid my;