mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-13 15:20:31 +01:00
glx: Use initstate_r / random_r instead of corrupting global random number state
Previously srandom and random were used. This cause the global random number generator state to be modified. This caused problems for applications that called srandom before calling into GLX. By using local state the global state is left unmodified. This should fix bug #23774.
This commit is contained in:
parent
08d39251a7
commit
9666529b5a
1 changed files with 7 additions and 3 deletions
|
|
@ -87,9 +87,13 @@
|
|||
|
||||
#define HASH_ALLOC malloc
|
||||
#define HASH_FREE free
|
||||
#define HASH_RANDOM_DECL
|
||||
#define HASH_RANDOM_INIT(seed) srandom(seed)
|
||||
#define HASH_RANDOM random()
|
||||
#define HASH_RANDOM_DECL struct random_data rd; int32_t rv; char rs[256]
|
||||
#define HASH_RANDOM_INIT(seed) \
|
||||
do { \
|
||||
(void) memset(&rd, 0, sizeof(rd)); \
|
||||
(void) initstate_r(seed, rs, sizeof(rs), &rd); \
|
||||
} while(0)
|
||||
#define HASH_RANDOM ((void) random_r(&rd, &rv), rv)
|
||||
#define HASH_RANDOM_DESTROY
|
||||
|
||||
typedef struct __glxHashBucket
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue