Auf der Suche nach einer Qt Klasse um Metadaten (exif) von Bildern auszulesen bin ich auf QExifImageHeader gestossen. Die stammt aus dem inzw. aufgegebenen Projekt "Qt Extended", einem Versuch von Nokia Qt und Smartphone zusammenzubringen.
In QExifImageHeader habe ich auf diesen Fehler gefunden:
Originalcode: ist Fehlerhaft weil keine Kopie vom QByteArray angelegt wird, somit wird der Inhalt von "value" scheinbar zufällig überschrieben wenn das Original QByteArray ungültig wird.
Code: Alles auswählen
class QExifUndefinedValuePrivate : public QExifValuePrivate
{
public:
QExifUndefinedValuePrivate( const QByteArray &v )
: QExifValuePrivate( QExifValue::Undefined, v.size() ), value( v )
{ }
QByteArray value;
};
Code: Alles auswählen
QExifUndefinedValuePrivate( const QByteArray &v )
: QExifValuePrivate( QExifValue::Undefined, v.size() )/*, value( v )*/
{ value = v; }
QByteArray value;
Code: Alles auswählen
QExifUndefinedValuePrivate( const QByteArray &v )
: QExifValuePrivate( QExifValue::Undefined, v.size() )/*, value( v )*/
{ value = "";
value.append(v);
}
QByteArray value;
Frage:
(C++ Grundlagen) Wie kann eine Kopie einer Klasse "erzwungen" werden, damit mit "value = v" eine Kopie erstellt wird?
Gruß Sig