Module: wine Branch: master Commit: 11216fabc488f407a4a92ed2d187c5913afe2869 URL: http://source.winehq.org/git/wine.git/?a=commit;h=11216fabc488f407a4a92ed2d1...
Author: Piotr Caban piotr@codeweavers.com Date: Mon Dec 10 12:47:54 2012 +0100
msvcrt: Reorganize _localtime64 function.
---
dlls/msvcrt/time.c | 49 +++++++++++++++++++++---------------------------- 1 files changed, 21 insertions(+), 28 deletions(-)
diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c index 05980a5..263c035 100644 --- a/dlls/msvcrt/time.c +++ b/dlls/msvcrt/time.c @@ -376,33 +376,6 @@ MSVCRT___time32_t CDECL MSVCRT__mkgmtime(struct MSVCRT_tm *time) #endif
/********************************************************************* - * _localtime64 (MSVCRT.@) - */ -struct MSVCRT_tm* CDECL MSVCRT__localtime64(const MSVCRT___time64_t* secs) -{ - struct tm *tm; - thread_data_t *data; - time_t seconds = *secs; - - if (seconds < 0) return NULL; - - _mlock(_TIME_LOCK); - if (!(tm = localtime( &seconds))) { - _munlock(_TIME_LOCK); - return NULL; - } - - data = msvcrt_get_thread_data(); - if(!data->time_buffer) - data->time_buffer = MSVCRT_malloc(sizeof(struct MSVCRT_tm)); - - unix_tm_to_msvcrt( data->time_buffer, tm ); - _munlock(_TIME_LOCK); - - return data->time_buffer; -} - -/********************************************************************* * _localtime64_s (MSVCRT.@) */ int CDECL _localtime64_s(struct MSVCRT_tm *time, const MSVCRT___time64_t *secs) @@ -435,11 +408,31 @@ int CDECL _localtime64_s(struct MSVCRT_tm *time, const MSVCRT___time64_t *secs) }
/********************************************************************* + * _localtime64 (MSVCRT.@) + */ +struct MSVCRT_tm* CDECL MSVCRT__localtime64(const MSVCRT___time64_t* secs) +{ + thread_data_t *data = msvcrt_get_thread_data(); + + if(!data->time_buffer) + data->time_buffer = MSVCRT_malloc(sizeof(struct MSVCRT_tm)); + + if(_localtime64_s(data->time_buffer, secs)) + return NULL; + return data->time_buffer; +} + +/********************************************************************* * _localtime32 (MSVCRT.@) */ struct MSVCRT_tm* CDECL MSVCRT__localtime32(const MSVCRT___time32_t* secs) { - MSVCRT___time64_t secs64 = *secs; + MSVCRT___time64_t secs64; + + if(!secs) + return NULL; + + secs64 = *secs; return MSVCRT__localtime64( &secs64 ); }