diff options
| author | Michal Hruby <michal.mhr@gmail.com> | 2012-10-01 18:18:32 +0200 | 
|---|---|---|
| committer | Michal Hruby <michal.mhr@gmail.com> | 2012-10-01 18:18:32 +0200 | 
| commit | c5feb1e991fa9e756ae97a7926994770256662a7 (patch) | |
| tree | 9b3a36e7739f2953b670243daff3844287abbf9f /UnityCore | |
| parent | 20183cc101a39c8bbb886053da94f4bce0bb2502 (diff) | |
Fix Variant assignment operator
(bzr r2769.4.1)
Diffstat (limited to 'UnityCore')
| -rw-r--r-- | UnityCore/Variant.cpp | 14 | ||||
| -rw-r--r-- | UnityCore/Variant.h | 2 | 
2 files changed, 15 insertions, 1 deletions
| diff --git a/UnityCore/Variant.cpp b/UnityCore/Variant.cpp index 21507d001..e8eba40a2 100644 --- a/UnityCore/Variant.cpp +++ b/UnityCore/Variant.cpp @@ -31,7 +31,7 @@ Variant::Variant()  Variant::Variant(GVariant* variant)  : variant_(variant)  { - g_variant_ref_sink(variant_); + if (variant) g_variant_ref_sink(variant_);  }  Variant::Variant(GVariant* variant, StealRef const& ref) @@ -95,6 +95,11 @@ bool Variant::ASVToHints(HintsMap& hints) const  return true;  } +void Variant::swap(Variant& other) +{ + std::swap(this->variant_, other.variant_); +} +  Variant& Variant::operator=(GVariant* val)  {  if (variant_) g_variant_unref(variant_); @@ -103,6 +108,13 @@ Variant& Variant::operator=(GVariant* val)  return *this;  } +Variant& Variant::operator=(Variant other) +{ + swap(other); + + return *this; +} +  Variant::operator GVariant* () const  {  return variant_; diff --git a/UnityCore/Variant.h b/UnityCore/Variant.h index a851a060d..1dcebd38d 100644 --- a/UnityCore/Variant.h +++ b/UnityCore/Variant.h @@ -53,7 +53,9 @@ public:  bool ASVToHints(HintsMap& hints) const; + void swap(Variant&);  Variant& operator=(GVariant*); + Variant& operator=(Variant);  operator GVariant*() const;  operator bool() const; | 
