guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 08/17: Mutex instead of critical sectoin in symbol->keyw


From: Andy Wingo
Subject: [Guile-commits] 08/17: Mutex instead of critical sectoin in symbol->keyword
Date: Tue, 1 Nov 2016 22:50:44 +0000 (UTC)

wingo pushed a commit to branch master
in repository guile.

commit c88d0cc402f9146023df7d6c2309510882599eba
Author: Andy Wingo <address@hidden>
Date:   Tue Nov 1 22:40:38 2016 +0100

    Mutex instead of critical sectoin in symbol->keyword
    
    * libguile/keywords.c (scm_symbol_to_keyword): Use a mutex in a dynwind
      instead of a critical section.
---
 libguile/keywords.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libguile/keywords.c b/libguile/keywords.c
index 49cccd5..cd9c9d8 100644
--- a/libguile/keywords.c
+++ b/libguile/keywords.c
@@ -63,7 +63,8 @@ SCM_DEFINE (scm_symbol_to_keyword, "symbol->keyword", 1, 0, 0,
 
   SCM_ASSERT_TYPE (scm_is_symbol (symbol), symbol, 0, NULL, "symbol");
 
-  SCM_CRITICAL_SECTION_START;
+  scm_dynwind_begin (0);
+  scm_dynwind_pthread_mutex_lock (&scm_i_misc_mutex);
   /* Note: `scm_cell' and `scm_hashq_set_x' can raise an out-of-memory
      error.  */
   keyword = scm_hashq_ref (keyword_obarray, symbol, SCM_BOOL_F);
@@ -72,7 +73,7 @@ SCM_DEFINE (scm_symbol_to_keyword, "symbol->keyword", 1, 0, 0,
       keyword = scm_cell (scm_tc7_keyword, SCM_UNPACK (symbol));
       scm_hashq_set_x (keyword_obarray, symbol, keyword);
     }
-  SCM_CRITICAL_SECTION_END;
+  scm_dynwind_end ();
   return keyword;
 }
 #undef FUNC_NAME



reply via email to

[Prev in Thread] Current Thread [Next in Thread]