[webkit-dev] Re: [webkit-changes] cvs commit: JavaScriptCore/pcre pcre.h pcre_compile.c pcre_exec.c

Darin Adler darin at apple.com
Fri Jan 6 17:28:53 PST 2006


On Jan 6, 2006, at 3:51 PM, George Staikos wrote:

> On Friday 06 January 2006 17:43, David wrote:
>>   -  tm t;
>>   -  utc ? gmtime_r(&tv, &t) : localtime_r(&tv, &t);
>>   +  tm t = *(utc ? gmtime(&tv) : localtime(&tv));
>>      // We had an out of range year. Restore the year (plus/minus  
>> offset
>>      // found by calculating tm_year) and fix the week day  
>> calculation.
>>      if (realYearOffset != 0) {
>>   @@ -769,8 +779,7 @@
>>    JSValue *DateObjectImp::callAsFunction(ExecState * /*exec*/,  
>> JSObject *
>> /*thisObj*/, const List &/*args*/) {
>>        time_t t = time(0);
>>   -    tm ts;
>>   -    localtime_r(&t, &ts);
>>   +    tm ts = *localtime(&t);
>>        return jsString(formatDate(ts) + " " + formatTime(ts));
>>    }
>>
>>   @@ -899,8 +908,7 @@
>>        // produce incorrect results, but there's no other option when
>> calling localtime_r(). if (!utc) {
>>            time_t tval = mktime(t) + (time_t)((ms + yearOffset) /  
>> 1000);
>>   -        struct tm t3;
>>   -        localtime_r(&tval, &t3);
>>   +        tm t3 = *localtime(&tval);
>>            t->tm_isdst = t3.tm_isdst;
>>        }
>
>    These look quite questionable to me.  Is threadsafety not a goal  
> anymore?

These calls are thread-safe on both Mac OS X and Windows -- both  
those platforms use per-thread globals for these calls.

On Mac OS X, we also have the _r variants, but they are no more or  
less thread-safe (although it's more elegant to not use the globals).  
If there's an important platform that has the _r variants but a non- 
thread-safe localtime and gmtime we can add conditionally compiled  
code since Windows does not have the _r variants.

     -- Darin




More information about the webkit-dev mailing list