Если документация говорит, что это reentrant (и, следовательно, thread-safe ), то это так.
Если когда-либо была ошибка в коде (не в вашем коде), и функция не была действительно потоко-безопасной , вы ничего не можете с этим поделать (если не используете другую функцию), и вам не нужно исправить это в вашем коде: функция должна вести себя так, как она задокументирована.
Однако я был бы осторожен с результатами, предоставленными valgrind
. Это отличный инструмент, и я использую его часто. Но иногда это просто неправильно . И для чего-то столь же сложного, как определение условий гонки, я бы был еще более осторожен с тем, что он говорит. Особенно о стандартной функции, которая используется на протяжении десятилетий.
Мой совет здесь: просто игнорируйте это. Если вы когда-либо сталкивались с проблемами и считаете, что за это отвечает localtime_r()
, напишите в соответствующий список рассылки, чтобы сообщить о проблеме, и / или используйте другую функцию.
А пока у вас все будет хорошо.