diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index 695f935f1..dd7d6c0bc 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -849,7 +849,7 @@ void Tag::toRational (int& num, int& denom, int ofs) { case RATIONAL: num = (int)sget4 (value+ofs, getOrder()); denom = (int)sget4 (value+ofs+4, getOrder()); break; case FLOAT: num = 0; denom = 0; break; case UNDEFINED: num = 0; denom = 0; break; - default: num = 0; denom = 0; // Quick fix for missing cases (INVALID, DOUBLE, OLYUNDEF, SUBDIR) + default: num = 0; denom = 0; break; // Quick fix for missing cases (INVALID, DOUBLE, OLYUNDEF, SUBDIR) } } diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index 185aee9fc..29ee62ca1 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -212,6 +212,7 @@ class ExifManager { class Interpreter { public: Interpreter () {} + virtual ~Interpreter() {}; virtual std::string toString (Tag* t) { return ""; } virtual void fromString (Tag* t, const std::string& value) {} }; diff --git a/rtexif/stdattribs.cc b/rtexif/stdattribs.cc index 06aacf9fd..2d8d96306 100644 --- a/rtexif/stdattribs.cc +++ b/rtexif/stdattribs.cc @@ -325,18 +325,21 @@ class UserCommentInterpreter : public Interpreter { public: UserCommentInterpreter () {} virtual std::string toString (Tag* t) { - char buffer[1024]; + char *buffer = new char[t->getCount()]; if (!strncmp((char*)t->getValue(), "ASCII\0\0\0",8)) strncpy (buffer, (char*)t->getValue()+8, t->getCount()-8); else buffer[0]=0; - return buffer; + std::string retVal(buffer); + delete [] buffer; + return retVal; } virtual void fromString (Tag* t, const std::string& value) { - char buffer[1024]; + char *buffer = new char[t->getCount()]; memcpy (buffer, "ASCII\0\0\0", 8); strcpy (buffer+8, value.c_str()); t->fromString (buffer, value.size() + 9); + delete [] buffer; } }; UserCommentInterpreter userCommentInterpreter;