Blame packages/e/exiv2/always-use-signed-char-for-conversion.patch

Bernhard M. Wiedemann 514c2a
Treat std::string characters always as signed char
Bernhard M. Wiedemann 514c2a
even on architectures where char is unsigned.
Bernhard M. Wiedemann 514c2a
Bernhard M. Wiedemann 514c2a
Fixes missing testsuite exceptions.
Bernhard M. Wiedemann 514c2a
Bernhard M. Wiedemann 514c2a
--- a/src/value.cpp
Bernhard M. Wiedemann 514c2a
+++ b/src/value.cpp
Bernhard M. Wiedemann 514c2a
@@ -352,13 +352,13 @@ namespace Exiv2 {
Bernhard M. Wiedemann 514c2a
     long StringValueBase::toLong(long n) const
Bernhard M. Wiedemann 514c2a
     {
Bernhard M. Wiedemann 514c2a
         ok_ = true;
Bernhard M. Wiedemann 514c2a
-        return value_.at(n);
Bernhard M. Wiedemann 514c2a
+        return static_cast<long>(static_cast<signed char>(value_.at(n)));
Bernhard M. Wiedemann 514c2a
     }
Bernhard M. Wiedemann 514c2a
 
Bernhard M. Wiedemann 514c2a
     float StringValueBase::toFloat(long n) const
Bernhard M. Wiedemann 514c2a
     {
Bernhard M. Wiedemann 514c2a
         ok_ = true;
Bernhard M. Wiedemann 514c2a
-        return value_.at(n);
Bernhard M. Wiedemann 514c2a
+        return static_cast<float>(static_cast<signed char>(value_.at(n)));
Bernhard M. Wiedemann 514c2a
     }
Bernhard M. Wiedemann 514c2a
 
Bernhard M. Wiedemann 514c2a
     Rational StringValueBase::toRational(long n) const