Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2004/10/22 13:56:46 $
- Version: $Revision: 1.149 $
+ Date: $Date: 2004/11/15 15:29:04 $
+ Version: $Revision: 1.154 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
*/
void File::Initialise()
{
+ PixelConverter = NULL; //just in case
if ( HeaderInternal->IsReadable() )
{
ImageDataSizeRaw = ComputeDecompressedPixelDataSizeFromHeader();
ImageDataSize = ImageDataSizeRaw;
}
- PixelConverter = new PixelConvert;
+ PixelConverter = new PixelConvert; //LEAK !
PixelConverter->GrabInformationsFromHeader( HeaderInternal );
}
SaveInitialValues();
HeaderInternal = 0;
DeleteInitialValues();
+ if( PixelConverter )
+ {
+ delete PixelConverter;
+ }
+
}
/**
// - it is not defined (i.e. it's value is 0)
// - it's 12, since we will expand the image to 16 bits (see
// PixelConvert::ConvertDecompress12BitsTo16Bits() )
- if ( ( numberBitsAllocated == 0 ) || ( numberBitsAllocated == 12 ) )
+ if ( numberBitsAllocated == 0 || numberBitsAllocated == 12 )
{
numberBitsAllocated = 16;
}
// The decompressed image migth not be loaded yet:
std::ifstream* fp = HeaderInternal->OpenFile();
PixelConverter->ReadAndDecompressPixelData( fp );
- HeaderInternal->CloseFile();
+ if(fp) HeaderInternal->CloseFile();
decompressed = PixelConverter->GetDecompressed();
if ( ! decompressed )
{
std::ofstream fp1(fileName.c_str(), std::ios::out | std::ios::binary );
if (!fp1)
{
- printf("Fail to open (write) file [%s] \n", fileName.c_str());
+ dbg.Verbose(2, "Fail to open (write) file:", fileName.c_str());
return false;
}
fp1.write((char*)Pixel_Data, ImageDataSize);
std::ios::out | std::ios::binary);
if (fp1 == NULL)
{
- printf("Failed to open (write) File [%s] \n", fileName.c_str());
+ dbg.Verbose(2, "Failed to open (write) File: " , fileName.c_str());
return false;
}
if ( type == ImplicitVR || type == ExplicitVR )
{
// writing Dicom File Preamble
- uint8_t* filePreamble = new uint8_t[128];
+ char filePreamble[128];
memset(filePreamble, 0, 128);
- fp1->write((char*)filePreamble, 128);
+ fp1->write(filePreamble, 128);
fp1->write("DICM", 4);
-
- delete[] filePreamble;
}
// --------------------------------------------------------------
}
// ----------------- End of Special Patch ----------------
fp1->close ();
+ delete fp1;
return true;
}