fix for the segment violation that is caused when the system color map is unavailable and set deleted pointers to NULL just to be safe

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3313 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Matthew Wilber
2003-05-25 15:18:38 +00:00
parent 4409942491
commit c30acb53ce
@@ -34,7 +34,6 @@
#include "TGAView.h"
#include "StreamBuffer.h"
#include <SupportDefs.h>
#include <OS.h>
// for min()/max()
// The input formats that this translator supports.
@@ -1100,6 +1099,7 @@ translate_from_bits_to_tgatc(BPositionIO *inSource,
uint8 *bitsRowData = new uint8[bitsRowBytes];
if (!bitsRowData) {
delete[] tgaRowData;
tgaRowData = NULL;
return B_ERROR;
}
@@ -1115,7 +1115,12 @@ translate_from_bits_to_tgatc(BPositionIO *inSource,
convert_to_tga = pix_bits_to_tga;
ssize_t rd = inSource->Read(bitsRowData, bitsRowBytes);
const color_map *pmap = system_colors();
const color_map *pmap = NULL;
if (fromspace == B_CMAP8) {
pmap = system_colors();
if (!pmap)
return B_ERROR;
}
while (rd == bitsRowBytes) {
status_t bytescopied;
bytescopied = convert_to_tga(bitsRowData, tgaRowData, fromspace,
@@ -1133,7 +1138,9 @@ translate_from_bits_to_tgatc(BPositionIO *inSource,
} // while (rd == bitsRowBytes)
delete[] bitsRowData;
bitsRowData = NULL;
delete[] tgaRowData;
tgaRowData = NULL;
return B_OK;
}
@@ -1183,12 +1190,15 @@ translate_from_bits1_to_tgabw(BPositionIO *inSource,
uint8 *medRowData = new uint8[imagespec.width];
if (!medRowData) {
delete[] tgaRowData;
tgaRowData = NULL;
return B_ERROR;
}
uint8 *bitsRowData = new uint8[bitsRowBytes];
if (!bitsRowData) {
delete[] medRowData;
medRowData = NULL;
delete[] tgaRowData;
tgaRowData = NULL;
return B_ERROR;
}
@@ -1240,8 +1250,11 @@ translate_from_bits1_to_tgabw(BPositionIO *inSource,
} // while (rd == bitsRowBytes)
delete[] bitsRowData;
bitsRowData = NULL;
delete[] medRowData;
medRowData = NULL;
delete[] tgaRowData;
tgaRowData = NULL;
return B_OK;
}
@@ -1592,6 +1605,8 @@ translate_from_bits(BPositionIO *inSource, ssize_t amtread, uint8 *read,
// write Be's system palette to the TGA file
uint8 pal[1024];
const color_map *pmap = system_colors();
if (!pmap)
return B_ERROR;
for (int32 i = 0; i < 256; i++) {
uint8 *palent = pal + (i * 4);
rgb_color c = pmap->color_list[i];
@@ -1797,6 +1812,7 @@ translate_from_tganm_to_bits(BPositionIO *inSource,
uint8 *bitsRowData = new uint8[bitsRowBytes];
if (!bitsRowData) {
delete[] tgaRowData;
tgaRowData = NULL;
return B_ERROR;
}
@@ -1822,7 +1838,9 @@ translate_from_tganm_to_bits(BPositionIO *inSource,
}
delete[] tgaRowData;
tgaRowData = NULL;
delete[] bitsRowData;
bitsRowData = NULL;
return B_OK;
}
@@ -1950,6 +1968,7 @@ translate_from_tganmrle_to_bits(BPositionIO *inSource,
}
delete[] bitsRowData;
bitsRowData = NULL;
return result;
}
@@ -2091,6 +2110,7 @@ translate_from_tgam_to_bits(BPositionIO *inSource,
uint8 *bitsRowData = new uint8[bitsRowBytes];
if (!bitsRowData) {
delete[] tgaRowData;
tgaRowData = NULL;
return B_ERROR;
}
@@ -2115,7 +2135,9 @@ translate_from_tgam_to_bits(BPositionIO *inSource,
}
delete[] tgaRowData;
tgaRowData = NULL;
delete[] bitsRowData;
bitsRowData = NULL;
return B_OK;
}
@@ -2262,6 +2284,7 @@ translate_from_tgamrle_to_bits(BPositionIO *inSource,
}
delete[] bitsRowData;
bitsRowData = NULL;
return result;
}