include/vcl/vclptr.hxx | 22 +++++++++++++++------- vcl/source/outdev/map.cxx | 3 ++- 2 files changed, 17 insertions(+), 8 deletions(-)
New commits: commit d7763d97fe836c013f2026a79f33e49a6b507efc Author: Stephan Bergmann <[email protected]> Date: Mon Jun 15 09:50:44 2015 +0200 Assume that nDPI should never be zero in ImplLogicToPixel ...(same as is already done in ImplPixelToLogic), and that eacbead4f5a4dc7c8db3d60c948e28c199aa2b10 "vcl: handle nDPI == 0 in ImplPixelToLogic()" was a misguided attempt at fixing symptoms of the problem fixed with 670100fcfbb39d3dbe4afdb27fbced26d7b14283 "Remove FastLoader optimization." Change-Id: Ia42c6c7c7026f3a0b71e79938b33c140fec0afa6 diff --git a/vcl/source/outdev/map.cxx b/vcl/source/outdev/map.cxx index c330f19..37db101 100644 --- a/vcl/source/outdev/map.cxx +++ b/vcl/source/outdev/map.cxx @@ -400,9 +400,10 @@ static long ImplLogicToPixel( long n, long nDPI, long nMapNum, long nMapDenom, static long ImplPixelToLogic( long n, long nDPI, long nMapNum, long nMapDenom, long nThres ) { + assert(nDPI > 0); // To "use" it... (void) nThres; - if (nMapNum == 0 || nDPI == 0) + if (nMapNum == 0) { return 0; } commit 0f1976988a69fd91100a73331d12f21aa9861e83 Author: Stephan Bergmann <[email protected]> Date: Mon Jun 15 09:17:40 2015 +0200 Fix VclPtr assignment operators The original templated assignment operator would never have been used, as std::enable_if expects a bool value as first template argument. But it was also unnecessary anyway: (1) Assignment from VclPtr<reference_type> was (and is) covered by the implicitly defined copy assignment operator. (2) Assignment from naked reference_type* was covered by the user-supplied constructor from reference_type* to temporary, followed by (1); it is now covered directly by the user-supplied assignment operator from reference_type*. (3) Assignment from VclPtr<derived_type> was covered by the user-supplied, templated constructor from VclPtr<derived_type> to temporary, followed by (1); it is now covered directly by the user-supplied, templated assignment operator from VclPtr<derived_type>. (4) Assignment from naked derived_type* was (and is) covered by an implicit pointer up-cast, followed by (2). Change-Id: I3c7527feea72fdda76d911a42ae856c353b700b5 diff --git a/include/vcl/vclptr.hxx b/include/vcl/vclptr.hxx index cd8f46f..79c784f 100644 --- a/include/vcl/vclptr.hxx +++ b/include/vcl/vclptr.hxx @@ -65,7 +65,8 @@ private: }; public: - typedef typename C< sizeof (f(H(), 0)) == 1, void *, void >::t t; + static bool const value = sizeof (f(H(), 0)) == 1; + typedef typename C< value, void *, void >::t t; }; }; }; // namespace detail, namespace vcl @@ -163,16 +164,23 @@ public: m_rInnerRef.set(pBody); } - /** Up-casting conversion constructor: Copies interface reference. + /** Up-casting assignment operator. - Does not work for up-casts to ambiguous bases. For the special case of - up-casting to Reference< XInterface >, see the corresponding conversion - operator. + Does not work for up-casts to ambiguous bases. @param rRef another reference */ - template< class derived_type, class = typename std::enable_if< ::vcl::detail::UpCast< reference_type, derived_type >::t >::type > - inline VclPtr<reference_type>& operator= (derived_type * pBody) + template<typename derived_type> + typename std::enable_if< + vcl::detail::UpCast<reference_type, derived_type>::value, + VclPtr &>::type + operator =(VclPtr<derived_type> const & rRef) + { + m_rInnerRef.set(rRef.get()); + return *this; + } + + VclPtr & operator =(reference_type * pBody) { m_rInnerRef.set(pBody); return *this; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
