- static SCM eval_string = SCM_UNDEFINED, k_module = SCM_UNDEFINED;
- static scm_i_pthread_mutex_t init_mutex = SCM_I_PTHREAD_MUTEX_INITIALIZER;
-
- scm_i_scm_pthread_mutex_lock (&init_mutex);
- if (SCM_UNBNDP (eval_string))
- {
- eval_string = scm_c_public_variable ("ice-9 eval-string", "eval-string");
- k_module = scm_from_locale_keyword ("module");
- }
- scm_i_pthread_mutex_unlock (&init_mutex);
+ static scm_i_pthread_once_t once = SCM_I_PTHREAD_ONCE_INIT;
+ scm_i_pthread_once (&once, init_eval_string_var_and_k_module);