int result = fread(&header,1,sizeof(KtxFileHeader),fp);
if( 0 == result )
{
+ fclose( fp );
return false;
}
// Skip the key-values:
const long int imageSizeOffset = sizeof(KtxFileHeader) + header.bytesOfKeyValueData;
- fseek(fp, imageSizeOffset, SEEK_END);
+ if( fseek(fp, imageSizeOffset, SEEK_END) )
+ {
+ fclose( fp );
+ return false;
+ }
+
lSize = ftell(fp);
+ if( lSize == -1L )
+ {
+ fclose( fp );
+ return false;
+ }
+
rewind(fp);
- if(fseek(fp, imageSizeOffset, SEEK_SET))
+ if( fseek(fp, imageSizeOffset, SEEK_SET) )
{
+ fclose( fp );
return false;
}
+
cubedata.img.resize(header.numberOfFaces);
for(unsigned int face=0; face < header.numberOfFaces; ++face) //array_element must be 0 or 1
unsigned int imgSize[6];
unsigned char* imgPointer = buffer;
result = fread(buffer,1,lSize,fp);
+
+ fclose(fp);
+
if( 0 == result )
{
+ free( buffer );
return false;
}
- fclose(fp);
-
if( 0 == header.numberOfMipmapLevels )
{
header.numberOfMipmapLevels = 1u;