[erledigt]QByteArray richtig kopieren?
Verfasst: 8. Februar 2014 19:30
Vorgeschichte:
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.
für bessere Übersichtlichkeit geändert in: sollte aber exakt dem oberen Code entsprechen.
Meine Lösung des Problems
Mit value.append(v) erzwinge ich eine Kopie des Dateninhaltes.
Frage:
(C++ Grundlagen) Wie kann eine Kopie einer Klasse "erzwungen" werden, damit mit "value = v" eine Kopie erstellt wird?
Gruß Sig
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