diff options
Diffstat (limited to 'recipes/glib/0013-grand-Only-use-rand_s-when-targetting-Visual-Studio-.patch')
-rw-r--r-- | recipes/glib/0013-grand-Only-use-rand_s-when-targetting-Visual-Studio-.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/recipes/glib/0013-grand-Only-use-rand_s-when-targetting-Visual-Studio-.patch b/recipes/glib/0013-grand-Only-use-rand_s-when-targetting-Visual-Studio-.patch new file mode 100644 index 00000000..11d2be0a --- /dev/null +++ b/recipes/glib/0013-grand-Only-use-rand_s-when-targetting-Visual-Studio-.patch @@ -0,0 +1,45 @@ +From 13799511a0e2044f8deb24aa95a4abd623c76c0f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> +Date: Sat, 13 Sep 2014 16:31:03 +0300 +Subject: [PATCH] grand: Only use rand_s() when targetting Visual Studio >= + 2005 + +It did not exist before. Fall back to the current time plus +process id on older targets. This makes GLib work again on +Windows XP. + +https://bugzilla.gnome.org/show_bug.cgi?id=736458 +--- + glib/grand.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/glib/grand.c b/glib/grand.c +index 6262cd2..e5d681b 100644 +--- a/glib/grand.c ++++ b/glib/grand.c +@@ -261,10 +261,22 @@ g_rand_new (void) + seed[3] = getppid (); + } + #else /* G_OS_WIN32 */ ++ /* rand_s() is only available since Visual Studio 2005 */ ++#if defined(_MSC_VER) && _MSC_VER >= 1400 + gint i; + + for (i = 0; i < G_N_ELEMENTS (seed); i++) + rand_s (&seed[i]); ++#else ++ GTimeVal now; ++ ++ g_get_current_time (&now); ++ seed[0] = now.tv_sec; ++ seed[1] = now.tv_usec; ++ seed[2] = getpid (); ++ seed[3] = 0; ++#endif ++ + #endif + + return g_rand_new_with_seed_array (seed, 4); +-- +2.1.0 + |