diff options
author | Noel Grandin <noel@peralex.com> | 2015-07-30 08:20:20 +0200 |
---|---|---|
committer | Noel Grandin <noelgrandin@gmail.com> | 2015-07-30 07:15:39 +0000 |
commit | cebfe56ae5f9cee4b403370774040f35a17d223c (patch) | |
tree | ee5ef74632b70980e58af8e6c75a6be921622c11 | |
parent | a45827b2308febc7369db27fb489a6d1389534e1 (diff) |
add assert for valid value in o3tl::typed_flags_set
, fixing a couple of bugs in the process
Change-Id: I40f932deecbcc99dff9aa13dd1882c7487e7fa8e
Reviewed-on: https://gerrit.libreoffice.org/17411
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
-rw-r--r-- | include/o3tl/typed_flags_set.hxx | 5 | ||||
-rw-r--r-- | include/vcl/salnativewidgets.hxx | 18 | ||||
-rw-r--r-- | sw/inc/fesh.hxx | 2 |
3 files changed, 14 insertions, 11 deletions
diff --git a/include/o3tl/typed_flags_set.hxx b/include/o3tl/typed_flags_set.hxx index d997f6ac6afc..d3ac7e276775 100644 --- a/include/o3tl/typed_flags_set.hxx +++ b/include/o3tl/typed_flags_set.hxx @@ -70,7 +70,10 @@ struct is_typed_flags { public: explicit Wrap(typename std::underlying_type<E>::type value): value_(value) - { assert(detail::isNonNegative(value)); } + { + assert(detail::isNonNegative(value)); + assert((value & ~M) == 0); + } operator E() { return static_cast<E>(value_); } diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx index 8118b299dba8..2ae7a6e26c19 100644 --- a/include/vcl/salnativewidgets.hxx +++ b/include/vcl/salnativewidgets.hxx @@ -240,20 +240,20 @@ typedef sal_uInt32 ControlPart; * in the ControlState. */ enum class ControlState { - NONE = 0, - ENABLED = 0x0001, - FOCUSED = 0x0002, - PRESSED = 0x0004, - ROLLOVER = 0x0008, - HIDDEN = 0x0010, - DEFAULT = 0x0020, - SELECTED = 0x0040, + NONE = 0, + ENABLED = 0x0001, + FOCUSED = 0x0002, + PRESSED = 0x0004, + ROLLOVER = 0x0008, + HIDDEN = 0x0010, + DEFAULT = 0x0020, + SELECTED = 0x0040, DOUBLEBUFFERING = 0x4000, ///< Set when the control is painted using double-buffering via VirtualDevice. CACHING_ALLOWED = 0x8000, ///< Set when the control is completely visible (i.e. not clipped). }; namespace o3tl { - template<> struct typed_flags<ControlState> : is_typed_flags<ControlState, 0xc007f> {}; + template<> struct typed_flags<ControlState> : is_typed_flags<ControlState, 0xc07f> {}; } class ControlCacheKey diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx index b8604d13936e..472d57c88f78 100644 --- a/sw/inc/fesh.hxx +++ b/sw/inc/fesh.hxx @@ -82,7 +82,7 @@ enum class FrmTypeFlags { }; namespace o3tl { - template<> struct typed_flags<FrmTypeFlags> : is_typed_flags<FrmTypeFlags, 0x4fff> {}; + template<> struct typed_flags<FrmTypeFlags> : is_typed_flags<FrmTypeFlags, 0x7fff> {}; } //! values can be combined via logical or |