reference conversions

There's no nullptr here.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
main
Rosen Penev 3 years ago
parent 48f848f5bb
commit a86bc386da

@ -47,16 +47,16 @@ struct EXIV2API Photoshop {
/// @return 0 if successful;<BR> /// @return 0 if successful;<BR>
/// 3 if no data for psTag was found in pPsData;<BR> /// 3 if no data for psTag was found in pPsData;<BR>
/// -2 if the pPsData buffer does not contain valid data. /// -2 if the pPsData buffer does not contain valid data.
static int locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag, const byte** record, uint32_t* sizeHdr, static int locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag, const byte** record, uint32_t& sizeHdr,
uint32_t* sizeData); uint32_t& sizeData);
/// @brief Forwards to locateIrb() with \em psTag = \em iptc_ /// @brief Forwards to locateIrb() with \em psTag = \em iptc_
static int locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr, static int locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
uint32_t* sizeData); uint32_t& sizeData);
/// @brief Forwards to locatePreviewIrb() with \em psTag = \em preview_ /// @brief Forwards to locatePreviewIrb() with \em psTag = \em preview_
static int locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr, static int locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
uint32_t* sizeData); uint32_t& sizeData);
/// @brief Set the new IPTC IRB, keeps existing IRBs but removes the IPTC block if there is no new IPTC data to write. /// @brief Set the new IPTC IRB, keeps existing IRBs but removes the IPTC block if there is no new IPTC data to write.
/// @param pPsData Existing IRB buffer /// @param pPsData Existing IRB buffer

@ -52,7 +52,7 @@ int main(int argc, char* const argv[]) {
const Exiv2::byte* record; const Exiv2::byte* record;
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
Exiv2::Photoshop::locateIptcIrb(irb.data(), irb.size(), &record, &sizeHdr, &sizeData); Exiv2::Photoshop::locateIptcIrb(irb.data(), irb.size(), &record, sizeHdr, sizeData);
Exiv2::DataBuf rawIptc = Exiv2::IptcParser::encode(iptcData); Exiv2::DataBuf rawIptc = Exiv2::IptcParser::encode(iptcData);
std::cout << "Comparing IPTC and IRB size... "; std::cout << "Comparing IPTC and IRB size... ";
if (static_cast<uint32_t>(rawIptc.size()) != sizeData) { if (static_cast<uint32_t>(rawIptc.size()) != sizeData) {

@ -264,7 +264,7 @@ void JpegBase::readMetadata() {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
const byte* pCur = &psBlob[0]; const byte* pCur = &psBlob[0];
const byte* pEnd = pCur + psBlob.size(); const byte* pEnd = pCur + psBlob.size();
while (pCur < pEnd && 0 == Photoshop::locateIptcIrb(pCur, pEnd - pCur, &record, &sizeHdr, &sizeIptc)) { while (pCur < pEnd && 0 == Photoshop::locateIptcIrb(pCur, pEnd - pCur, &record, sizeHdr, sizeIptc)) {
#ifdef EXIV2_DEBUG_MESSAGES #ifdef EXIV2_DEBUG_MESSAGES
std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n"; std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n";
#endif #endif

@ -22,7 +22,7 @@ bool Photoshop::valid(const byte* pPsData, size_t sizePsData) {
const byte* pCur = pPsData; const byte* pCur = pPsData;
const byte* pEnd = pPsData + sizePsData; const byte* pEnd = pPsData + sizePsData;
int ret = 0; int ret = 0;
while (pCur < pEnd && 0 == (ret = Photoshop::locateIptcIrb(pCur, (pEnd - pCur), &record, &sizeHdr, &sizeIptc))) { while (pCur < pEnd && 0 == (ret = Photoshop::locateIptcIrb(pCur, (pEnd - pCur), &record, sizeHdr, sizeIptc))) {
pCur = record + sizeHdr + sizeIptc + (sizeIptc & 1); pCur = record + sizeHdr + sizeIptc + (sizeIptc & 1);
} }
return ret >= 0; return ret >= 0;
@ -31,8 +31,8 @@ bool Photoshop::valid(const byte* pPsData, size_t sizePsData) {
// Todo: Generalised from JpegBase::locateIptcData without really understanding // Todo: Generalised from JpegBase::locateIptcData without really understanding
// the format (in particular the header). So it remains to be confirmed // the format (in particular the header). So it remains to be confirmed
// if this also makes sense for psTag != Photoshop::iptc // if this also makes sense for psTag != Photoshop::iptc
int Photoshop::locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag, const byte** record, uint32_t* sizeHdr, int Photoshop::locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag, const byte** record, uint32_t& sizeHdr,
uint32_t* sizeData) { uint32_t& sizeData) {
if (sizePsData < 12) { if (sizePsData < 12) {
return 3; return 3;
} }
@ -81,8 +81,8 @@ int Photoshop::locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag,
#ifdef EXIV2_DEBUG_MESSAGES #ifdef EXIV2_DEBUG_MESSAGES
std::cerr << "ok\n"; std::cerr << "ok\n";
#endif #endif
*sizeData = dataSize; sizeData = dataSize;
*sizeHdr = psSize + 10; sizeHdr = psSize + 10;
*record = hrd; *record = hrd;
return 0; return 0;
} }
@ -102,13 +102,13 @@ int Photoshop::locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag,
return 3; return 3;
} }
int Photoshop::locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr, int Photoshop::locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
uint32_t* sizeData) { uint32_t& sizeData) {
return locateIrb(pPsData, sizePsData, iptc_, record, sizeHdr, sizeData); return locateIrb(pPsData, sizePsData, iptc_, record, sizeHdr, sizeData);
} }
int Photoshop::locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr, int Photoshop::locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
uint32_t* sizeData) { uint32_t& sizeData) {
return locateIrb(pPsData, sizePsData, preview_, record, sizeHdr, sizeData); return locateIrb(pPsData, sizePsData, preview_, record, sizeHdr, sizeData);
} }
@ -124,7 +124,7 @@ DataBuf Photoshop::setIptcIrb(const byte* pPsData, size_t sizePsData, const Iptc
uint32_t sizeIptc = 0; uint32_t sizeIptc = 0;
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
DataBuf rc; DataBuf rc;
if (0 > Photoshop::locateIptcIrb(pPsData, sizePsData, &record, &sizeHdr, &sizeIptc)) { if (0 > Photoshop::locateIptcIrb(pPsData, sizePsData, &record, sizeHdr, sizeIptc)) {
return rc; return rc;
} }
@ -155,7 +155,7 @@ DataBuf Photoshop::setIptcIrb(const byte* pPsData, size_t sizePsData, const Iptc
size_t pos = sizeFront; size_t pos = sizeFront;
auto nextSizeData = Safe::add<long>(static_cast<long>(sizePsData), -static_cast<long>(pos)); auto nextSizeData = Safe::add<long>(static_cast<long>(sizePsData), -static_cast<long>(pos));
enforce(nextSizeData >= 0, ErrorCode::kerCorruptedMetadata); enforce(nextSizeData >= 0, ErrorCode::kerCorruptedMetadata);
while (0 == Photoshop::locateIptcIrb(pPsData + pos, nextSizeData, &record, &sizeHdr, &sizeIptc)) { while (0 == Photoshop::locateIptcIrb(pPsData + pos, nextSizeData, &record, sizeHdr, sizeIptc)) {
const auto newPos = static_cast<size_t>(record - pPsData); const auto newPos = static_cast<size_t>(record - pPsData);
if (newPos > pos) { // Copy data up to the IPTC IRB if (newPos > pos) { // Copy data up to the IPTC IRB
append(psBlob, pPsData + pos, newPos - pos); append(psBlob, pPsData + pos, newPos - pos);

@ -235,7 +235,7 @@ void PngChunk::parseChunkContent(Image* pImage, const byte* key, size_t keySize,
const byte* pEnd = psData.c_data(psData.size() - 1); const byte* pEnd = psData.c_data(psData.size() - 1);
const byte* pCur = psData.c_data(); const byte* pCur = psData.c_data();
while (pCur < pEnd && 0 == Photoshop::locateIptcIrb(pCur, pEnd - pCur, &record, &sizeHdr, &sizeIptc)) { while (pCur < pEnd && 0 == Photoshop::locateIptcIrb(pCur, pEnd - pCur, &record, sizeHdr, sizeIptc)) {
if (sizeIptc) { if (sizeIptc) {
#ifdef EXIV2_DEBUG_MESSAGES #ifdef EXIV2_DEBUG_MESSAGES
std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n"; std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n";

@ -419,7 +419,7 @@ DataBuf LoaderNative::getData() const {
const byte* record; const byte* record;
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
if (Photoshop::locatePreviewIrb(psData.c_data(), psData.size(), &record, &sizeHdr, &sizeData) != 0) { if (Photoshop::locatePreviewIrb(psData.c_data(), psData.size(), &record, sizeHdr, sizeData) != 0) {
#ifndef SUPPRESS_WARNINGS #ifndef SUPPRESS_WARNINGS
EXV_WARNING << "Missing preview IRB in Photoshop EPS preview.\n"; EXV_WARNING << "Missing preview IRB in Photoshop EPS preview.\n";
#endif #endif

@ -330,7 +330,7 @@ void TiffDecoder::decodeIptc(const TiffEntryBase* object) {
byte const* record = nullptr; byte const* record = nullptr;
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
if (0 != Photoshop::locateIptcIrb(pData, size, &record, &sizeHdr, &sizeData)) { if (0 != Photoshop::locateIptcIrb(pData, size, &record, sizeHdr, sizeData)) {
return; return;
} }
if (0 == IptcParser::decode(iptcData_, record + sizeHdr, sizeData)) { if (0 == IptcParser::decode(iptcData_, record + sizeHdr, sizeData)) {

@ -41,7 +41,7 @@ TEST(Photoshop_locateIrb, returnsMinus2withInvalidPhotoshopIRB) {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
ASSERT_EQ(-2, Photoshop::locateIrb(reinterpret_cast<const byte*>(data.c_str()), data.size(), Photoshop::iptc_, ASSERT_EQ(-2, Photoshop::locateIrb(reinterpret_cast<const byte*>(data.c_str()), data.size(), Photoshop::iptc_,
&record, &sizeHdr, &sizeData)); &record, sizeHdr, sizeData));
} }
TEST(Photoshop_locateIrb, returnsMinus2WithMarkerNotStartingWith8BIM) { TEST(Photoshop_locateIrb, returnsMinus2WithMarkerNotStartingWith8BIM) {
@ -50,7 +50,7 @@ TEST(Photoshop_locateIrb, returnsMinus2WithMarkerNotStartingWith8BIM) {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
ASSERT_EQ(-2, Photoshop::locateIrb(reinterpret_cast<const byte*>(data.c_str()), data.size(), Photoshop::iptc_, ASSERT_EQ(-2, Photoshop::locateIrb(reinterpret_cast<const byte*>(data.c_str()), data.size(), Photoshop::iptc_,
&record, &sizeHdr, &sizeData)); &record, sizeHdr, sizeData));
} }
TEST(Photoshop_locateIrb, returns3withNotLongEnoughData) { TEST(Photoshop_locateIrb, returns3withNotLongEnoughData) {
@ -59,7 +59,7 @@ TEST(Photoshop_locateIrb, returns3withNotLongEnoughData) {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
ASSERT_EQ(3, Photoshop::locateIrb(reinterpret_cast<const byte*>(data.c_str()), data.size(), Photoshop::iptc_, &record, ASSERT_EQ(3, Photoshop::locateIrb(reinterpret_cast<const byte*>(data.c_str()), data.size(), Photoshop::iptc_, &record,
&sizeHdr, &sizeData)); sizeHdr, sizeData));
} }
TEST(Photoshop_locateIrb, returns0withGoodIptcIrb) { TEST(Photoshop_locateIrb, returns0withGoodIptcIrb) {
@ -75,7 +75,7 @@ TEST(Photoshop_locateIrb, returns0withGoodIptcIrb) {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
ASSERT_EQ(0, Photoshop::locateIrb(data.data(), data.size(), Photoshop::iptc_, &record, &sizeHdr, &sizeData)); ASSERT_EQ(0, Photoshop::locateIrb(data.data(), data.size(), Photoshop::iptc_, &record, sizeHdr, sizeData));
ASSERT_EQ(12, sizeHdr); ASSERT_EQ(12, sizeHdr);
ASSERT_EQ(27, sizeData); ASSERT_EQ(27, sizeData);
} }
@ -93,7 +93,7 @@ TEST(Photoshop_locateIptcIrb, returns0withGoodIptcIrb) {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
ASSERT_EQ(0, Photoshop::locateIptcIrb(data.data(), data.size(), &record, &sizeHdr, &sizeData)); ASSERT_EQ(0, Photoshop::locateIptcIrb(data.data(), data.size(), &record, sizeHdr, sizeData));
ASSERT_EQ(12, sizeHdr); ASSERT_EQ(12, sizeHdr);
ASSERT_EQ(27, sizeData); ASSERT_EQ(27, sizeData);
} }
@ -111,7 +111,7 @@ TEST(Photoshop_locateIptcIrb, returns3withoutIptcMarker) {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
ASSERT_EQ(3, Photoshop::locateIptcIrb(data.data(), data.size(), &record, &sizeHdr, &sizeData)); ASSERT_EQ(3, Photoshop::locateIptcIrb(data.data(), data.size(), &record, sizeHdr, sizeData));
} }
TEST(Photoshop_locatePreviewIrb, returns0withGoodPreviewIrb) { TEST(Photoshop_locatePreviewIrb, returns0withGoodPreviewIrb) {
@ -127,7 +127,7 @@ TEST(Photoshop_locatePreviewIrb, returns0withGoodPreviewIrb) {
uint32_t sizeHdr = 0; uint32_t sizeHdr = 0;
uint32_t sizeData = 0; uint32_t sizeData = 0;
ASSERT_EQ(0, Photoshop::locatePreviewIrb(data.data(), data.size(), &record, &sizeHdr, &sizeData)); ASSERT_EQ(0, Photoshop::locatePreviewIrb(data.data(), data.size(), &record, sizeHdr, sizeData));
ASSERT_EQ(12, sizeHdr); ASSERT_EQ(12, sizeHdr);
ASSERT_EQ(27, sizeData); ASSERT_EQ(27, sizeData);
} }

Loading…
Cancel
Save