Fix null pointer dereference (as hinted by Coverity)
Plus some `const` fixes.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user