533: Applied patch 2_read_and_modify_only_the_first_XMP_segment (Michael Ulbrich, Volker Grabsch)

v0.27.3
Andreas Huggel 16 years ago
parent 5ef4c5ee22
commit 853fa64d4d

@ -284,6 +284,7 @@ namespace Exiv2 {
Blob iptcBlob; Blob iptcBlob;
bool foundPsData = false; bool foundPsData = false;
bool foundExifData = false; bool foundExifData = false;
bool foundXmpData = false;
// Read section marker // Read section marker
int marker = advanceToMarker(); int marker = advanceToMarker();
@ -328,7 +329,8 @@ namespace Exiv2 {
--search; --search;
foundExifData = true; foundExifData = true;
} }
else if (marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) { else if ( !foundXmpData
&& marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) {
if (size < 31) { if (size < 31) {
rc = 6; rc = 6;
break; break;
@ -345,6 +347,7 @@ namespace Exiv2 {
#endif #endif
} }
--search; --search;
foundXmpData = true;
} }
else if ( marker == app13_ else if ( marker == app13_
&& memcmp(buf.pData_ + 2, Photoshop::ps3Id_, 14) == 0) { && memcmp(buf.pData_ + 2, Photoshop::ps3Id_, 14) == 0) {
@ -526,7 +529,8 @@ namespace Exiv2 {
io_->read(rawExif.pData_, rawExif.size_); io_->read(rawExif.pData_, rawExif.size_);
if (io_->error() || io_->eof()) throw Error(22); if (io_->error() || io_->eof()) throw Error(22);
} }
else if (marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) { else if ( skipApp1Xmp == -1
&& marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) {
if (size < 31) throw Error(22); if (size < 31) throw Error(22);
skipApp1Xmp = count; skipApp1Xmp = count;
++search; ++search;

Loading…
Cancel
Save