diff options
author | Andy Wingo <wingo@pobox.com> | 2015-01-22 13:04:34 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-01-22 13:04:34 +0100 |
commit | 086bbcc874f230c709b7c0a46439c2fd3f7cd37c (patch) | |
tree | 9a7d42c5a3c7880c50ff4d679ae2e8cf91149dfc /libguile/error.c | |
parent | d5dffec4ffcb93ab649acb2b6f7d8a013ba0e10e (diff) | |
parent | fdd319e9bd4121d844662d3d8ccc69b462b60840 (diff) | |
download | guile-086bbcc874f230c709b7c0a46439c2fd3f7cd37c.tar.gz |
Merge commit 'fdd319e9bd4121d844662d3d8ccc69b462b60840'
Diffstat (limited to 'libguile/error.c')
-rw-r--r-- | libguile/error.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libguile/error.c b/libguile/error.c index 2878fa0dd..89345c2b7 100644 --- a/libguile/error.c +++ b/libguile/error.c @@ -1,5 +1,5 @@ -/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2004, 2006, 2010, - * 2012, 2013, 2014 Free Software Foundation, Inc. +/* Copyright (C) 1995-1998, 2000, 2001, 2004, 2006, 2010, 2012-2014 + * 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 @@ -121,10 +121,13 @@ SCM_DEFINE (scm_strerror, "strerror", 1, 0, 0, #define FUNC_NAME s_scm_strerror { SCM ret; + int errnum = scm_to_int (err); /* Must be done outside of the + critical section below, to avoid a + deadlock on errors. */ scm_dynwind_begin (0); scm_i_dynwind_pthread_mutex_lock (&scm_i_misc_mutex); - ret = scm_from_locale_string (strerror (scm_to_int (err))); + ret = scm_from_locale_string (strerror (errnum)); scm_dynwind_end (); return ret; |