fix: 解决gmtime和localtime接口由于g_tm全局变量导致的竞态问题
删除全局变量,接口使用自己的内部静态变量,避免竞态 Close #I4LW3H Signed-off-by: JerryH <huangjieliang@huawei.com> Change-Id: I3c74b1897b3909df93d21b9d521af270cc6fc610
This commit is contained in:
parent
ecce17ea48
commit
1454b76482
|
@ -63,9 +63,6 @@ STATIC const UINT8 g_montbl[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,
|
||||||
*/
|
*/
|
||||||
long timezone = -8 * 60 * 60; // defaults to CST: 8 hours east of the Prime Meridian
|
long timezone = -8 * 60 * 60; // defaults to CST: 8 hours east of the Prime Meridian
|
||||||
|
|
||||||
/* internal shared struct tm object for localtime and gmtime */
|
|
||||||
static struct tm g_tm;
|
|
||||||
|
|
||||||
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
|
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
|
||||||
{
|
{
|
||||||
UINT64 nseconds;
|
UINT64 nseconds;
|
||||||
|
@ -508,7 +505,8 @@ struct tm *gmtime_r(const time_t *timep, struct tm *result)
|
||||||
|
|
||||||
struct tm *gmtime(const time_t *timer)
|
struct tm *gmtime(const time_t *timer)
|
||||||
{
|
{
|
||||||
return gmtime_r(timer, &g_tm);
|
static struct tm tm;
|
||||||
|
return gmtime_r(timer, &tm);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct tm *localtime_r(const time_t *timep, struct tm *result)
|
struct tm *localtime_r(const time_t *timep, struct tm *result)
|
||||||
|
@ -526,7 +524,8 @@ struct tm *localtime_r(const time_t *timep, struct tm *result)
|
||||||
|
|
||||||
struct tm *localtime(const time_t *timer)
|
struct tm *localtime(const time_t *timer)
|
||||||
{
|
{
|
||||||
return localtime_r(timer, &g_tm);
|
static struct tm tm;
|
||||||
|
return localtime_r(timer, &tm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static time_t ConvertUtc2Secs(struct tm *tm)
|
static time_t ConvertUtc2Secs(struct tm *tm)
|
||||||
|
|
Loading…
Reference in New Issue