В общем, использую файловую систему FlashFile v2.11 Периодически возникают ошибки - появляются файлы с общими кластерами.
В функции fcreate обнаружена непроинициализированная переменная (clus_temp), что при определенных условиях может привести к вызову процедуры стирания цепочки кластеров, что ведет к частичной или полной потере файла.
Как пофиксить:
Было
FILE *fcreate(uchar *NAME, uchar MODE) { #ifdef _DIRECTORIES_SUPPORTED_ uchar fpath[14]; ulong addr_temp; #endif DIR_ENT_TIME ff_time; DIR_ENT_DATE ff_date; uint clus_temp; // <----- Это оно
Стало
FILE *fcreate(uchar *NAME, uchar MODE) { #ifdef _DIRECTORIES_SUPPORTED_ uchar fpath[14]; ulong addr_temp; #endif DIR_ENT_TIME ff_time; DIR_ENT_DATE ff_date; uint clus_temp = 0;
В общем, на всякий случай поделился, мало ли...
|