diff --git a/ChangeLog b/ChangeLog index df44a1dd6..81a6ab6f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-11-27 Tobias Doerffel + + * include/plugin.h: + * include/base64.h: + * src/lib/base64.cpp: + fixed loading of base64-encoded data being generated via Qt3-version + of QDataStream-class + 2007-11-27 Javier Serrano Polo * include/main_window.h: diff --git a/include/base64.h b/include/base64.h index 4b367eac6..8d02a2d0b 100644 --- a/include/base64.h +++ b/include/base64.h @@ -29,8 +29,7 @@ #include #include - -class QVariant; +#include namespace base64 @@ -49,7 +48,8 @@ namespace base64 memcpy( *_data, data.constData(), *_size ); } QString encode( const QVariant & _data ); - QVariant decode( const QString & _b64 ); + QVariant decode( const QString & _b64, + QVariant::Type _force_type = QVariant::Invalid ); } ; diff --git a/include/plugin.h b/include/plugin.h index 4356546ab..791808690 100644 --- a/include/plugin.h +++ b/include/plugin.h @@ -91,7 +91,7 @@ public: desc( NULL ) { const QList l = - base64::decode( _dump_data ). + base64::decode( _dump_data, QVariant::List ). toList(); if( l.empty() ) { diff --git a/src/lib/base64.cpp b/src/lib/base64.cpp index b8391bd0c..e222c5226 100644 --- a/src/lib/base64.cpp +++ b/src/lib/base64.cpp @@ -52,7 +52,7 @@ QString encode( const QVariant & _data ) -QVariant decode( const QString & _b64 ) +QVariant decode( const QString & _b64, QVariant::Type _force_type ) { char * dst = NULL; int dsize = 0; @@ -63,6 +63,12 @@ QVariant decode( const QString & _b64 ) QDataStream in( &buf ); QVariant ret; in >> ret; + if( _force_type != QVariant::Invalid && ret.type() != _force_type ) + { + buf.reset(); + in.setVersion( QDataStream::Qt_3_3 ); + in >> ret; + } return( ret ); }