valgrind жалуется на __mktime - это моя вина?

Впервые (в моей новой среде разработки) я вижу, как valgrind жалуется на mktime, но я не уверен, является ли это ошибкой библиотеки libc, valgrind или моего кода. Я начну с ошибки (ниже) - достаточно ли этой информации, чтобы объяснить причину?

==3682==    at 0x38ACE9A505: __mktime_internal (in /lib64/libc-2.12.so)
==3682==    by 0x4D66F7: ???
==3682==    by 0x4D7611: ???
==3682==    by 0x4D23CD: ???
==3682==    by 0x4D175B: ???
==3682==    by 0x38ACE1ECDC: (below main) (in /lib64/libc-2.12.so)
==3682==  Uninitialised value was created by a stack allocation
==3682==    at 0x4D64BE: ???
==3682== 
==3682== Conditional jump or move depends on uninitialised value(s)
==3682==    at 0x38ACE9A505: __mktime_internal (in /lib64/libc-2.12.so)
==3682==    by 0x4D67DA: ???
==3682==    by 0x4D7611: ???
==3682==    by 0x4D23CD: ???
==3682==    by 0x4D175B: ???
==3682==    by 0x38ACE1ECDC: (below main) (in /lib64/libc-2.12.so)
==3682==  Uninitialised value was created by a stack allocation
==3682==    at 0x4D64BE: ???

person Michelle Dupuis    schedule 27.01.2012    source источник


Ответы (1)


Для всех, кто сталкивается с этим...

Структура была заполнена strptime, который, по-видимому, не заполняет неиспользуемые члены структуры (dst)... но mktime этого не любит :), поэтому memset обнулил

person Michelle Dupuis    schedule 28.01.2012
comment
Это очень распространенная ошибка. Если вы хотите, чтобы mktime определял правильное значение tm_isdst, установите для него значение -1 (как описано на справочной странице mktime). - person Employed Russian; 28.01.2012
comment
Или, как предлагается здесь, вместо memsetting инициализировать структура с нулями с использованием struct tm date = {0}; - person freitass; 23.05.2013