Fix null pointer dereference (as hinted by Coverity)

Plus some `const` fixes.
This commit is contained in:
Flössie
2018-01-01 12:13:29 +01:00
parent 3d40d9cdce
commit 0b7b1d6ab3
3 changed files with 19 additions and 15 deletions

View File

@@ -474,14 +474,14 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
uint16 bitspersample = 0, samplesperpixel = 0, sampleformat = 0, photometric = 0, compression = 0;
rtexif::Tag* bps = frameRootDir->findTag("BitsPerSample");
rtexif::Tag* spp = frameRootDir->findTag("SamplesPerPixel");
rtexif::Tag* sf = frameRootDir->findTag("SampleFormat");
rtexif::Tag* pi = frameRootDir->findTag("PhotometricInterpretation");
rtexif::Tag* c = frameRootDir->findTag("Compression");
const rtexif::Tag* const bps = frameRootDir->findTag("BitsPerSample");
const rtexif::Tag* const spp = frameRootDir->findTag("SamplesPerPixel");
const rtexif::Tag* const sf = frameRootDir->findTag("SampleFormat");
const rtexif::Tag* const pi = frameRootDir->findTag("PhotometricInterpretation");
const rtexif::Tag* const c = frameRootDir->findTag("Compression");
if (mnote && (!make.compare (0, 6, "PENTAX") || (!make.compare (0, 5, "RICOH") && !model.compare (0, 6, "PENTAX")))) {
rtexif::Tag* hdr = mnote->findTag("HDR");
const rtexif::Tag* const hdr = mnote->findTag("HDR");
if (hdr) {
if (hdr->toInt() > 0 && hdr->toInt(2) > 0) {
isHDR = true;
@@ -490,7 +490,7 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
#endif
}
} else {
rtexif::Tag* dm = mnote->findTag("DriveMode");
const rtexif::Tag* const dm = mnote->findTag("DriveMode");
if (dm) {
char buffer[60];
dm->toString(buffer, 3);
@@ -505,7 +505,7 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
}
if (!isHDR) {
rtexif::Tag* q = mnote->findTag("Quality");
const rtexif::Tag* const q = mnote->findTag("Quality");
if (q && q->toInt() == 7) {
isPixelShift = true;
#if PRINT_HDR_PS_DETECTION
@@ -530,7 +530,11 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
sampleformat = sf->toInt();
}
if ((!bps & !spp) || !pi) {
if (
!bps
|| !spp
|| !pi
) {
return;
}

View File

@@ -1572,7 +1572,7 @@ double Tag::toDouble (int ofs) const
/**
* @brief Create an array of the elements
*/
double *Tag::toDoubleArray (int ofs)
double* Tag::toDoubleArray (int ofs) const
{
double *values = new double[count];
@@ -1583,7 +1583,7 @@ double *Tag::toDoubleArray (int ofs)
return values;
}
void Tag::toRational (int& num, int& denom, int ofs)
void Tag::toRational (int& num, int& denom, int ofs) const
{
switch (type) {
@@ -1632,7 +1632,7 @@ void Tag::toRational (int& num, int& denom, int ofs)
}
}
void Tag::toString (char* buffer, int ofs)
void Tag::toString (char* buffer, int ofs) const
{
if (type == UNDEFINED && !directory) {

View File

@@ -282,9 +282,9 @@ public:
int toInt (int ofs = 0, TagType astype = INVALID) const;
void fromInt (int v);
double toDouble (int ofs = 0) const;
double *toDoubleArray (int ofs = 0);
void toRational (int& num, int& denom, int ofs = 0);
void toString (char* buffer, int ofs = 0);
double* toDoubleArray (int ofs = 0) const;
void toRational (int& num, int& denom, int ofs = 0) const;
void toString (char* buffer, int ofs = 0) const;
void fromString (const char* v, int size = -1);
void setInt (int v, int ofs = 0, TagType astype = LONG);