[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:41:08 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=2d91fb1

The following commit has been merged in the master branch:
commit 2d91fb1f6d22cec4c1321ab23ab8fe1b22f57d73
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Sat Jan 30 10:05:48 2010 +0000

    #677: Avoid deleting Exif metadata from the container when writing.
---
 src/tiffvisitor.cpp     | 37 +++++++++++++++----------------------
 src/tiffvisitor_int.hpp |  2 +-
 2 files changed, 16 insertions(+), 23 deletions(-)

diff --git a/src/tiffvisitor.cpp b/src/tiffvisitor.cpp
index 0e41d11..7281663 100644
--- a/src/tiffvisitor.cpp
+++ b/src/tiffvisitor.cpp
@@ -434,7 +434,7 @@ namespace Exiv2 {
         : exifData_(exifData),
           iptcData_(iptcData),
           xmpData_(xmpData),
-          del_(true),
+          count_(0),
           pRoot_(pRoot),
           pSourceTree_(0),
           byteOrder_(byteOrder),
@@ -555,7 +555,8 @@ namespace Exiv2 {
 
     bool TiffEncoder::dirty() const
     {
-        if (dirty_ || exifData_.count() > 0) return true;
+        assert(!(count_ > exifData_.count()));
+        if (dirty_ || count_ != exifData_.count()) return true;
         return false;
     }
 
@@ -630,7 +631,7 @@ namespace Exiv2 {
         if (!object->mn_) {
             encodeTiffComponent(object);
         }
-        else if (del_) {
+        else {
             // The makernote is made up of decoded tags, delete binary tag
             ExifKey key(object->tag(), tiffGroupName(object->group()));
             ExifData::iterator pos = exifData_.findKey(key);
@@ -642,7 +643,7 @@ namespace Exiv2 {
     {
         assert(object != 0);
 
-        ExifData::iterator pos = exifData_.findKey(ExifKey("Exif.MakerNote.ByteOrder"));
+        ExifData::const_iterator pos = exifData_.findKey(ExifKey("Exif.MakerNote.ByteOrder"));
         if (pos != exifData_.end()) {
             // Set Makernote byte order
             ByteOrder bo = stringToByteOrder(pos->toString());
@@ -650,17 +651,15 @@ namespace Exiv2 {
                 object->setByteOrder(bo);
                 setDirty();
             }
-            if (del_) exifData_.erase(pos);
+            ++count_;
         }
-        if (del_) {
-            // Remove remaining synthesized tags
-            static const char* synthesizedTags[] = {
-                "Exif.MakerNote.Offset",
-            };
-            for (unsigned int i = 0; i < EXV_COUNTOF(synthesizedTags); ++i) {
-                ExifData::iterator pos = exifData_.findKey(ExifKey(synthesizedTags[i]));
-                if (pos != exifData_.end()) exifData_.erase(pos);
-            }
+        // Count remaining synthesized tags
+        static const char* synthesizedTags[] = {
+            "Exif.MakerNote.Offset",
+        };
+        for (unsigned int i = 0; i < EXV_COUNTOF(synthesizedTags); ++i) {
+            ExifData::iterator pos = exifData_.findKey(ExifKey(synthesizedTags[i]));
+            if (pos != exifData_.end()) ++count_;
         }
         // Modify encoder for Makernote peculiarities, byte order
         byteOrder_ = object->byteOrder();
@@ -718,7 +717,7 @@ namespace Exiv2 {
     {
         assert(object != 0);
 
-        ExifData::iterator pos = exifData_.end();
+        ExifData::const_iterator pos = exifData_.end();
         const Exifdatum* ed = datum;
         if (ed == 0) {
             // Non-intrusive writing: find matching tag
@@ -761,9 +760,7 @@ namespace Exiv2 {
                 object->encode(*this, ed);
             }
         }
-        if (del_ && pos != exifData_.end()) {
-            exifData_.erase(pos);
-        }
+        if (pos != exifData_.end()) ++count_;
 #ifdef DEBUG
         std::cerr << "
";
 #endif
@@ -965,10 +962,6 @@ namespace Exiv2 {
         writeMethod_ = wmIntrusive;
         pSourceTree_ = pSourceDir;
 
-        // Ensure that the exifData_ entries are not deleted, to be able to
-        // iterate over all remaining entries.
-        del_ = false;
-
         ExifData::const_iterator posBo = exifData_.end();
         for (ExifData::const_iterator i = exifData_.begin();
              i != exifData_.end(); ++i) {
diff --git a/src/tiffvisitor_int.hpp b/src/tiffvisitor_int.hpp
index a02d40c..e022a79 100644
--- a/src/tiffvisitor_int.hpp
+++ b/src/tiffvisitor_int.hpp
@@ -493,7 +493,7 @@ namespace Exiv2 {
         ExifData exifData_;          //!< Copy of the Exif data to encode
         const IptcData& iptcData_;   //!< IPTC data to encode, just a reference
         const XmpData&  xmpData_;    //!< XMP data to encode, just a reference
-        bool del_;                   //!< Indicates if Exif data entries should be deleted after encoding
+        long count_;                 //!< Counter for processed Exifdata elements
         TiffComponent* pRoot_;       //!< Root element of the composite
         TiffComponent* pSourceTree_; //!< Parsed source tree for reference
         ByteOrder byteOrder_;        //!< Byteorder for encoding

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list