diff --git a/servers/slapd/charray.c b/servers/slapd/charray.c index e3974e4ac05662ee3758b78cefdc1d40e7ff2e20..741a0e15954cc7c62a429a3e6c4c1fceb04c4708 100644 --- a/servers/slapd/charray.c +++ b/servers/slapd/charray.c @@ -114,6 +114,7 @@ str2charray( char *str, char *brkstr ) { char **res; char *s; + char *lasts; int i; /* protect the input string from strtok */ @@ -129,15 +130,13 @@ str2charray( char *str, char *brkstr ) res = (char **) ch_malloc( (i + 1) * sizeof(char *) ); i = 0; - pthread_mutex_lock(&strtok_mutex); - - for ( s = strtok( str, brkstr ); s != NULL; s = strtok( NULL, - brkstr ) ) { + for ( s = strtok_r( str, brkstr, &lasts ); + s != NULL; + s = strtok_r( NULL, brkstr, &lasts ) ) + { res[i++] = ch_strdup( s ); } - pthread_mutex_unlock(&strtok_mutex); - res[i] = NULL; free( str ); diff --git a/servers/slapd/init.c b/servers/slapd/init.c index 527fe165076e6af080d0ee8b5cccf517a9db7677..f92d8bba735e4d1238f41600a112d6912d2563a3 100644 --- a/servers/slapd/init.c +++ b/servers/slapd/init.c @@ -45,7 +45,6 @@ pthread_mutex_t new_conn_mutex; #ifdef SLAPD_CRYPT pthread_mutex_t crypt_mutex; #endif -pthread_mutex_t strtok_mutex; int num_conns; long ops_initiated; @@ -70,7 +69,6 @@ init( void ) pthread_mutex_init( &new_conn_mutex, pthread_mutexattr_default ); pthread_mutex_init( ¤ttime_mutex, pthread_mutexattr_default ); - pthread_mutex_init( &strtok_mutex, pthread_mutexattr_default ); pthread_mutex_init( &entry2str_mutex, pthread_mutexattr_default ); pthread_mutex_init( &replog_mutex, pthread_mutexattr_default ); pthread_mutex_init( &ops_mutex, pthread_mutexattr_default ); diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index cfdea5d3a619bbce6c0f0f1ef3727d1684ed1748..b519ffb96707e22e626980f4bf87780bae210e32 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -251,7 +251,6 @@ extern pthread_mutex_t active_threads_mutex; extern pthread_cond_t active_threads_cond; extern pthread_mutex_t currenttime_mutex; -extern pthread_mutex_t strtok_mutex; extern pthread_mutex_t entry2str_mutex; extern pthread_mutex_t new_conn_mutex; extern pthread_mutex_t num_sent_mutex; diff --git a/servers/slapd/tools/centipede.c b/servers/slapd/tools/centipede.c index d8943a9201cbdfa777c880013591c151215f562c..fec09219495b18ae92b0ec3c3407cc9e5ed68245 100644 --- a/servers/slapd/tools/centipede.c +++ b/servers/slapd/tools/centipede.c @@ -519,8 +519,10 @@ generate_new_centroids( /* generate a word-based centroid */ } else { - for ( w = strtok( val[j], WORD_BREAKS ); w != NULL; - w = strtok( NULL, WORD_BREAKS ) ) { + char *lasts; + for ( w = strtok_r( val[j], WORD_BREAKS, &lasts ); + w != NULL; + w = strtok_r( NULL, WORD_BREAKS, &lasts ) ) { key.dptr = w; key.dsize = strlen( key.dptr ) + 1; (void) ldbm_store( ldbm[i], key, data, LDBM_INSERT );