Some cleanup code possibly create endless loops because an unsigned
type was used as run variable but the check was >= 0 in the for loop.
wParam->rectangles[index].bitmapDataStream = (BYTE*) malloc(wParam->rectangles[index].bitmapLength);
if (!wParam->rectangles[index].bitmapDataStream)
{
- for (index -= 1; index >= 0; --index)
- {
- free(wParam->rectangles[index].bitmapDataStream);
- }
+ UINT32 i;
+ for (i = 0; i < index; ++i)
+ free(wParam->rectangles[i].bitmapDataStream);
+
free(wParam->rectangles);
free(wParam);
return FALSE;
_settings->TargetNetAddresses[index] = _strdup(settings->TargetNetAddresses[index]);
if (!_settings->TargetNetAddresses[index])
{
- for (--index; index >= 0; --index)
- free(_settings->TargetNetAddresses[index]);
+ UINT32 i;
+ for (i = 0; i < index; ++i)
+ free(_settings->TargetNetAddresses[i]);
free(_settings->TargetNetAddresses);
_settings->TargetNetAddresses = NULL;
_settings->TargetNetAddressCount = 0;
if (!format->formatName)
{
- for (--formatId; formatId >= 0; --formatId)
+ int i;
+ for(i = formatId-1; i >= 0; --i)
+ {
+ format = &(clipboard->formats[--clipboard->numFormats]);
free((void *)format->formatName);
- clipboard->numFormats = 0;
+ }
return FALSE;
}
}