svn commit: r198579 - in stable/7/lib/libc: . stdtime
Edwin Groothuis
edwin at FreeBSD.org
Thu Oct 29 11:00:40 UTC 2009
Author: edwin
Date: Thu Oct 29 11:00:39 2009
New Revision: 198579
URL: http://svn.freebsd.org/changeset/base/198579
Log:
MFC of r197189
Improve the way failure of pthread_key_create() gets detected.
PR: threads/138603
Submitted by: Mikulas Patocka
Modified:
stable/7/lib/libc/ (props changed)
stable/7/lib/libc/stdtime/localtime.c
Modified: stable/7/lib/libc/stdtime/localtime.c
==============================================================================
--- stable/7/lib/libc/stdtime/localtime.c Thu Oct 29 10:38:17 2009 (r198578)
+++ stable/7/lib/libc/stdtime/localtime.c Thu Oct 29 11:00:39 2009 (r198579)
@@ -21,6 +21,7 @@ __FBSDID("$FreeBSD$");
#include "namespace.h"
#include <sys/types.h>
#include <sys/stat.h>
+#include <errno.h>
#include <fcntl.h>
#include <pthread.h>
#include "private.h"
@@ -1413,12 +1414,15 @@ const time_t * const timep;
static pthread_mutex_t localtime_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_key_t localtime_key = -1;
struct tm *p_tm;
+ int r;
if (__isthreaded != 0) {
_pthread_mutex_lock(&localtime_mutex);
if (localtime_key < 0) {
- if (_pthread_key_create(&localtime_key, free) < 0) {
+ if ((r = _pthread_key_create(&localtime_key, free))
+ != 0) {
_pthread_mutex_unlock(&localtime_mutex);
+ errno = r;
return(NULL);
}
}
@@ -1510,12 +1514,14 @@ const time_t * const timep;
static pthread_mutex_t gmtime_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_key_t gmtime_key = -1;
struct tm *p_tm;
+ int r;
if (__isthreaded != 0) {
_pthread_mutex_lock(&gmtime_mutex);
if (gmtime_key < 0) {
- if (_pthread_key_create(&gmtime_key, free) < 0) {
+ if ((r = _pthread_key_create(&gmtime_key, free)) != 0) {
_pthread_mutex_unlock(&gmtime_mutex);
+ errno = r;
return(NULL);
}
}
More information about the svn-src-stable-7
mailing list