mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
Fix strerror error handling when given a non-integer argument.
Fixes <http://bugs.gnu.org/18065>. Reported and fixed by Glenn Michaels <gmichaels@Safe-mail.net>. * libguile/error.c (scm_strerror): Convert the argument to a C integer outside of the critical section, to avoid deadlock on error. * THANKS: Add Glenn Michaels to the fixes section.
This commit is contained in:
parent
9c5d6aa964
commit
fda17c20a3
2 changed files with 7 additions and 3 deletions
1
THANKS
1
THANKS
|
@ -134,6 +134,7 @@ For fixes or providing information which led to a fix:
|
|||
Dan McMahill
|
||||
Roger Mc Murtrie
|
||||
Scott McPeak
|
||||
Glenn Michaels
|
||||
Andrew Milkowski
|
||||
Tim Mooney
|
||||
Han-Wen Nienhuys
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue