Skip to content

Commit

Permalink
Merge PR #2687: Settings: add workaround for macOS "@variant(" bug.
Browse files Browse the repository at this point in the history
  • Loading branch information
mkrautz committed Dec 2, 2016
2 parents c45298e + c6029e6 commit 06d3785
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/mumble/Settings.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -476,6 +476,29 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(QList, 1)
#define LOADENUM(var, name) var = static_cast<BOOST_TYPEOF(var)>(settings_ptr->value(QLatin1String(name), var).toInt()) #define LOADENUM(var, name) var = static_cast<BOOST_TYPEOF(var)>(settings_ptr->value(QLatin1String(name), var).toInt())
#define LOADFLAG(var, name) var = static_cast<BOOST_TYPEOF(var)>(settings_ptr->value(QLatin1String(name), static_cast<int>(var)).toInt()) #define LOADFLAG(var, name) var = static_cast<BOOST_TYPEOF(var)>(settings_ptr->value(QLatin1String(name), static_cast<int>(var)).toInt())


// Workaround for mumble-voip/mumble#2638.
//
// Qt previously expected to be able to write
// NUL bytes in strings in plists. This is no
// longer possible, which causes Qt to write
// incomplete stings to the preferences plist.
// These are of the form "@Variant(", and, for
// Mumble, typically happen for float values.
//
// We detect this bad value and avoid loading
// it. This causes such settings to fall back
// to their defaults, instead of being set to
// a zero value.
#ifdef Q_OS_MAC
#undef SAVELOAD
#define SAVELOAD(var, name) \
do { \
if (settings_ptr->value(QLatin1String(name)).toString() != QLatin1String("@Variant(")) { \
var = qvariant_cast<BOOST_TYPEOF(var)>(settings_ptr->value(QLatin1String(name), var)); \
} \
} while (0)
#endif

void OverlaySettings::load() { void OverlaySettings::load() {
load(g.qs); load(g.qs);
} }
Expand Down

0 comments on commit 06d3785

Please sign in to comment.