Примеры ошибок, обнаруженных с помощью диагностики V772
V772. Calling a 'delete' operator for a void pointer will cause undefined behavior.
Haiku Operation System
V772 Calling a 'delete' operator for a void pointer will cause undefined behavior. Hashtable.cpp 207
void
Hashtable::MakeEmpty(int8 keyMode,int8 valueMode)
{
....
for (entry = fTable[index]; entry; entry = next) {
switch (keyMode) {
case HASH_EMPTY_DELETE:
// TODO: destructors are not called!
delete (void*)entry->key;
break;
case HASH_EMPTY_FREE:
free((void*)entry->key);
break;
}
switch (valueMode) {
case HASH_EMPTY_DELETE:
// TODO: destructors are not called!
delete entry->value;
break;
case HASH_EMPTY_FREE:
free(entry->value);
break;
}
next = entry->next;
delete entry;
}
....
}
Command & Conquer
V772 Calling a 'delete' operator for a void pointer will cause undefined behavior. ENDING.CPP 254
void GDI_Ending(void)
{
....
void * localpal = Load_Alloc_Data(CCFileClass("SATSEL.PAL"));
....
delete [] localpal;
....
}
Similar errors can be found in some other places:
- V772 Calling a 'delete' operator for a void pointer will cause undefined behavior. HEAP.CPP 284
- V772 Calling a 'delete' operator for a void pointer will cause undefined behavior. INIT.CPP 728
- V772 Calling a 'delete' operator for a void pointer will cause undefined behavior. MIXFILE.CPP 134
- And 18 additional diagnostic messages.
Overgrowth
V772 [CERT-MSC15-C] Calling a 'delete' operator for a void pointer will cause undefined behavior. OVR_CAPI_Util.cpp 380
typedef struct ovrHapticsClip_
{
const void* Samples;
....
} ovrHapticsClip;
....
OVR_PUBLIC_FUNCTION(void) ovr_ReleaseHapticsClip(ovrHapticsClip* hapticsClip)
{
if (hapticsClip != NULL && hapticsClip->Samples != NULL)
{
delete[] hapticsClip->Samples;
....
}
}