Don't call scm_lock_mutex and scm_unlock_mutex via pointer of wrong type
authorMark H Weaver <mhw@netris.org>
Sun, 22 May 2011 19:23:27 +0000 (15:23 -0400)
committerMark H Weaver <mhw@netris.org>
Sun, 22 May 2011 19:23:27 +0000 (15:23 -0400)
commit2a3db25e283a6b8e30d9761546605e7cae757c67
treeefc0e775300c4814d72e0872f7648e679ba60eba
parentad4bd7c2c0c931a91160772e5ebf40af0f471874
Don't call scm_lock_mutex and scm_unlock_mutex via pointer of wrong type

* libguile/threads.c (lock_mutex_return_void, unlock_mutex_return_void):
  New static functions that simply call scm_lock_mutex and
  scm_unlock_mutex, respectively, but return void instead of SCM.

  (scm_dynwind_lock_mutex): Pass unlock_mutex_return_void to
  scm_dynwind_unwind_handler_with_scm, and lock_mutex_return_void to
  scm_dynwind_rewind_handler_with_scm.  Previously, we passed
  scm_unlock_mutex and scm_lock_mutex (which return SCM), but the
  scm_dynwind_* functions expect pointers to functions which return
  void.  When SCM is of type union, this changes the calling conventions
  of the functions on some platforms (e.g. GCC 4.5.2 and 4.5.3 on x86).
libguile/threads.c