summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2018-08-20 14:23:02 +0200
committerMax Kellermann <max@musicpd.org>2018-08-20 14:23:02 +0200
commit9d63c8220bc01693691618cd507f8d57434bfac0 (patch)
treecc80ab990e8044b3b94954c65112e291c3eed242
parentedd9d16c840d4c181d2c88daf1dc600a25478417 (diff)
util/Cast: reverse operands in ContainerAttributeOffset()
The result shall be positive.
-rw-r--r--src/util/Cast.hxx6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/util/Cast.hxx b/src/util/Cast.hxx
index d71fb593e..21075f1ce 100644
--- a/src/util/Cast.hxx
+++ b/src/util/Cast.hxx
@@ -53,7 +53,7 @@ template<class C, class A>
static constexpr inline ptrdiff_t
ContainerAttributeOffset(const C *null_c, const A C::*p)
{
- return ptrdiff_t((const char *)null_c - (const char *)&(null_c->*p));
+ return ptrdiff_t((const char *)&(null_c->*p) - (const char *)null_c);
}
template<class C, class A>
@@ -70,7 +70,7 @@ template<class C, class A>
static inline constexpr C &
ContainerCast(A &a, const A C::*member)
{
- return *OffsetCast<C, A>(&a, ContainerAttributeOffset<C, A>(member));
+ return *OffsetCast<C, A>(&a, -ContainerAttributeOffset<C, A>(member));
}
/**
@@ -80,7 +80,7 @@ template<class C, class A>
static inline constexpr const C &
ContainerCast(const A &a, const A C::*member)
{
- return *OffsetCast<const C, const A>(&a, ContainerAttributeOffset<C, A>(member));
+ return *OffsetCast<const C, const A>(&a, -ContainerAttributeOffset<C, A>(member));
}
#endif