summaryrefslogtreecommitdiff
path: root/libguile/random.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-02-24 12:46:48 +0100
committerAndy Wingo <wingo@pobox.com>2013-02-24 12:46:48 +0100
commiteaf21539d4afb8df5d1b549215fd397b23004947 (patch)
tree992f2389c30b7376675b4471be61d8a9ed2f4bf1 /libguile/random.c
parent99d1843e2a06f422cbe349804a67d2972c4dedd9 (diff)
downloadguile-eaf21539d4afb8df5d1b549215fd397b23004947.tar.gz
random_state_of_last_resort doesn't rely on HAVE_POSIX
* libguile/random.c (random_state_of_last_resort): Add the PID as a seed only if we have scm_getpid().
Diffstat (limited to 'libguile/random.c')
-rw-r--r--libguile/random.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libguile/random.c b/libguile/random.c
index 2db19f729..a85ee8147 100644
--- a/libguile/random.c
+++ b/libguile/random.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2000,2001, 2003, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1999,2000,2001, 2003, 2005, 2006, 2009, 2010, 2013 Free Software Foundation, Inc.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 3 of
@@ -665,15 +665,18 @@ random_state_of_last_resort (void)
SCM time_of_day = scm_gettimeofday ();
SCM sources = scm_list_n
(scm_from_unsigned_integer (SCM_UNPACK (time_of_day)), /* heap addr */
- scm_getpid (), /* process ID */
scm_get_internal_real_time (), /* high-resolution process timer */
scm_from_unsigned_integer ((scm_t_bits) &time_of_day), /* stack addr */
scm_car (time_of_day), /* seconds since midnight 1970-01-01 UTC */
scm_cdr (time_of_day), /* microsecond component of the above clock */
SCM_UNDEFINED);
+ SCM seed = SCM_INUM0;
+
+#ifdef HAVE_POSIX
+ sources = scm_cons (scm_getpid (), sources); /* process ID */
+#endif
/* Concatenate the sources bitwise to form the seed */
- SCM seed = SCM_INUM0;
while (scm_is_pair (sources))
{
seed = scm_logxor (seed, scm_ash (scm_car (sources),