From c9aa1ab4eb49908f78f9279cf17f3691b79577e9 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Tue, 27 Nov 2007 11:42:41 +0000 Subject: [PATCH] fixed loading of base64-encoded data being generated via Qt3-version of QDataStream-class git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@617 0778d3d1-df1d-0410-868b-ea421aaaa00d --- ChangeLog | 8 ++++++++ include/base64.h | 6 +++--- include/plugin.h | 2 +- src/lib/base64.cpp | 8 +++++++- 4 files changed, 19 insertions(+), 5 deletions(-) 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 ); }