diff --git a/include/exiv2/photoshop.hpp b/include/exiv2/photoshop.hpp
index d8ef1015..31c420ad 100644
--- a/include/exiv2/photoshop.hpp
+++ b/include/exiv2/photoshop.hpp
@@ -47,16 +47,16 @@ struct EXIV2API Photoshop {
/// @return 0 if successful;
/// 3 if no data for psTag was found in pPsData;
/// -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,
- uint32_t* sizeData);
+ static int locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag, const byte** record, uint32_t& sizeHdr,
+ uint32_t& sizeData);
/// @brief Forwards to locateIrb() with \em psTag = \em iptc_
- static int locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr,
- uint32_t* sizeData);
+ static int locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
+ uint32_t& sizeData);
/// @brief Forwards to locatePreviewIrb() with \em psTag = \em preview_
- static int locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr,
- uint32_t* sizeData);
+ static int locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
+ 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.
/// @param pPsData Existing IRB buffer
diff --git a/samples/largeiptc-test.cpp b/samples/largeiptc-test.cpp
index deb2bd38..7db0d910 100644
--- a/samples/largeiptc-test.cpp
+++ b/samples/largeiptc-test.cpp
@@ -52,7 +52,7 @@ int main(int argc, char* const argv[]) {
const Exiv2::byte* record;
uint32_t sizeHdr = 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);
std::cout << "Comparing IPTC and IRB size... ";
if (static_cast(rawIptc.size()) != sizeData) {
diff --git a/src/jpgimage.cpp b/src/jpgimage.cpp
index a191ff2b..9b9f19e4 100644
--- a/src/jpgimage.cpp
+++ b/src/jpgimage.cpp
@@ -264,7 +264,7 @@ void JpegBase::readMetadata() {
uint32_t sizeHdr = 0;
const byte* pCur = &psBlob[0];
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
std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n";
#endif
diff --git a/src/photoshop.cpp b/src/photoshop.cpp
index 697da0d0..526f2ea0 100644
--- a/src/photoshop.cpp
+++ b/src/photoshop.cpp
@@ -22,7 +22,7 @@ bool Photoshop::valid(const byte* pPsData, size_t sizePsData) {
const byte* pCur = pPsData;
const byte* pEnd = pPsData + sizePsData;
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);
}
return ret >= 0;
@@ -31,8 +31,8 @@ bool Photoshop::valid(const byte* pPsData, size_t sizePsData) {
// Todo: Generalised from JpegBase::locateIptcData without really understanding
// the format (in particular the header). So it remains to be confirmed
// 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,
- uint32_t* sizeData) {
+int Photoshop::locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag, const byte** record, uint32_t& sizeHdr,
+ uint32_t& sizeData) {
if (sizePsData < 12) {
return 3;
}
@@ -81,8 +81,8 @@ int Photoshop::locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag,
#ifdef EXIV2_DEBUG_MESSAGES
std::cerr << "ok\n";
#endif
- *sizeData = dataSize;
- *sizeHdr = psSize + 10;
+ sizeData = dataSize;
+ sizeHdr = psSize + 10;
*record = hrd;
return 0;
}
@@ -102,13 +102,13 @@ int Photoshop::locateIrb(const byte* pPsData, size_t sizePsData, uint16_t psTag,
return 3;
}
-int Photoshop::locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr,
- uint32_t* sizeData) {
+int Photoshop::locateIptcIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
+ uint32_t& sizeData) {
return locateIrb(pPsData, sizePsData, iptc_, record, sizeHdr, sizeData);
}
-int Photoshop::locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t* sizeHdr,
- uint32_t* sizeData) {
+int Photoshop::locatePreviewIrb(const byte* pPsData, size_t sizePsData, const byte** record, uint32_t& sizeHdr,
+ uint32_t& 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 sizeHdr = 0;
DataBuf rc;
- if (0 > Photoshop::locateIptcIrb(pPsData, sizePsData, &record, &sizeHdr, &sizeIptc)) {
+ if (0 > Photoshop::locateIptcIrb(pPsData, sizePsData, &record, sizeHdr, sizeIptc)) {
return rc;
}
@@ -155,7 +155,7 @@ DataBuf Photoshop::setIptcIrb(const byte* pPsData, size_t sizePsData, const Iptc
size_t pos = sizeFront;
auto nextSizeData = Safe::add(static_cast(sizePsData), -static_cast(pos));
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(record - pPsData);
if (newPos > pos) { // Copy data up to the IPTC IRB
append(psBlob, pPsData + pos, newPos - pos);
diff --git a/src/pngchunk_int.cpp b/src/pngchunk_int.cpp
index 4e18431b..2cd40169 100644
--- a/src/pngchunk_int.cpp
+++ b/src/pngchunk_int.cpp
@@ -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* 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) {
#ifdef EXIV2_DEBUG_MESSAGES
std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n";
diff --git a/src/preview.cpp b/src/preview.cpp
index ee7e6415..ef6f842e 100644
--- a/src/preview.cpp
+++ b/src/preview.cpp
@@ -419,7 +419,7 @@ DataBuf LoaderNative::getData() const {
const byte* record;
uint32_t sizeHdr = 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
EXV_WARNING << "Missing preview IRB in Photoshop EPS preview.\n";
#endif
diff --git a/src/tiffvisitor_int.cpp b/src/tiffvisitor_int.cpp
index 30c5cf6d..dd01ded5 100644
--- a/src/tiffvisitor_int.cpp
+++ b/src/tiffvisitor_int.cpp
@@ -330,7 +330,7 @@ void TiffDecoder::decodeIptc(const TiffEntryBase* object) {
byte const* record = nullptr;
uint32_t sizeHdr = 0;
uint32_t sizeData = 0;
- if (0 != Photoshop::locateIptcIrb(pData, size, &record, &sizeHdr, &sizeData)) {
+ if (0 != Photoshop::locateIptcIrb(pData, size, &record, sizeHdr, sizeData)) {
return;
}
if (0 == IptcParser::decode(iptcData_, record + sizeHdr, sizeData)) {
diff --git a/unitTests/test_Photoshop.cpp b/unitTests/test_Photoshop.cpp
index 1dd31b98..8b123206 100644
--- a/unitTests/test_Photoshop.cpp
+++ b/unitTests/test_Photoshop.cpp
@@ -41,7 +41,7 @@ TEST(Photoshop_locateIrb, returnsMinus2withInvalidPhotoshopIRB) {
uint32_t sizeHdr = 0;
uint32_t sizeData = 0;
ASSERT_EQ(-2, Photoshop::locateIrb(reinterpret_cast(data.c_str()), data.size(), Photoshop::iptc_,
- &record, &sizeHdr, &sizeData));
+ &record, sizeHdr, sizeData));
}
TEST(Photoshop_locateIrb, returnsMinus2WithMarkerNotStartingWith8BIM) {
@@ -50,7 +50,7 @@ TEST(Photoshop_locateIrb, returnsMinus2WithMarkerNotStartingWith8BIM) {
uint32_t sizeHdr = 0;
uint32_t sizeData = 0;
ASSERT_EQ(-2, Photoshop::locateIrb(reinterpret_cast(data.c_str()), data.size(), Photoshop::iptc_,
- &record, &sizeHdr, &sizeData));
+ &record, sizeHdr, sizeData));
}
TEST(Photoshop_locateIrb, returns3withNotLongEnoughData) {
@@ -59,7 +59,7 @@ TEST(Photoshop_locateIrb, returns3withNotLongEnoughData) {
uint32_t sizeHdr = 0;
uint32_t sizeData = 0;
ASSERT_EQ(3, Photoshop::locateIrb(reinterpret_cast(data.c_str()), data.size(), Photoshop::iptc_, &record,
- &sizeHdr, &sizeData));
+ sizeHdr, sizeData));
}
TEST(Photoshop_locateIrb, returns0withGoodIptcIrb) {
@@ -75,7 +75,7 @@ TEST(Photoshop_locateIrb, returns0withGoodIptcIrb) {
uint32_t sizeHdr = 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(27, sizeData);
}
@@ -93,7 +93,7 @@ TEST(Photoshop_locateIptcIrb, returns0withGoodIptcIrb) {
uint32_t sizeHdr = 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(27, sizeData);
}
@@ -111,7 +111,7 @@ TEST(Photoshop_locateIptcIrb, returns3withoutIptcMarker) {
uint32_t sizeHdr = 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) {
@@ -127,7 +127,7 @@ TEST(Photoshop_locatePreviewIrb, returns0withGoodPreviewIrb) {
uint32_t sizeHdr = 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(27, sizeData);
}