Есть функция:
BOOLEAN HashAdd(
__in ULONG value,
__in ULONG data,
__inout ULONG *table,
__out_opt ULONG *dataTable,
__in ULONG tableSize)
{
ULONG i = value % tableSize;
BOOLEAN cycle = FALSE;
while (table[i] > 0)
{
i++;
if (i == tableSize)
{
if (cycle)
{
return FALSE;
}
else
{
i = 0;
cycle = TRUE;
}
}
}
table[i] = value;
if (dataTable) dataTable[i] = data;
return TRUE;
}
http://www.microsoft.com/whdc/devtools/tools/prefast.mspx на строчке
if (dataTable) dataTable[i] = data;
выдает сообщение
(PFD)Buffer overrun while writing to 'dataTable': the writable size is '1*4' bytes, but '8' bytes may be written.
Код 32-битный, как могут быть записаны 8 байт я понять не могу.
Может глюк PreFast?