GIFTranslator: Fix offset free

Re-offset red_error, green_error and blue_error when deleted,
since they are offseted at line 99, 109 and 120
after they are allocated.
Pointed out by Clang Static Analyzer

Change-Id: Ic12a754dff7049fc4fbfd25ababafd8243db6baa
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2354
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
This commit is contained in:
Murai Takashi 2020-03-13 06:49:36 +09:00 committed by waddlesplash
parent edfce7b327
commit 9a333ed1fc

View File

@ -102,7 +102,7 @@ GIFSave::GIFSave(BBitmap* bitmap, BPositionIO* output,
green_error = new(std::nothrow) int32[width + 2];
if (green_error == NULL) {
delete palette;
delete[] red_error;
delete[] &red_error[-1];
fatalerror = true;
return;
}
@ -112,8 +112,8 @@ GIFSave::GIFSave(BBitmap* bitmap, BPositionIO* output,
blue_error = new(std::nothrow) int32[width + 2];
if (blue_error == NULL) {
delete palette;
delete[] red_error;
delete[] green_error;
delete[] &red_error[-1];
delete[] &green_error[-1];
fatalerror = true;
return;
}
@ -186,9 +186,9 @@ GIFSave::GIFSave(BBitmap* bitmap, BPositionIO* output,
if (WriteGIFHeader() != B_OK) {
delete palette;
delete[] red_error;
delete[] green_error;
delete[] blue_error;
delete[] &red_error[-1];
delete[] &green_error[-1];
delete[] &blue_error[-1];
fatalerror = true;
return;
}
@ -199,9 +199,9 @@ GIFSave::GIFSave(BBitmap* bitmap, BPositionIO* output,
hash = new(std::nothrow) SFHash(1 << 16);
if (hash == NULL) {
delete palette;
delete[] red_error;
delete[] green_error;
delete[] blue_error;
delete[] &red_error[-1];
delete[] &green_error[-1];
delete[] &blue_error[-1];
fatalerror = true;
return;
}