summaryrefslogtreecommitdiff
path: root/binaryurp
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-06-02 16:38:12 +0100
committerCaolán McNamara <caolanm@redhat.com>2011-06-02 16:38:12 +0100
commitac9fcba54aa2a6b4378ec1841ccb16a53d294453 (patch)
tree00bbb6aee3410c94cbbd7dfacefed4d0265a62ad /binaryurp
parentcc3fd6bb907ad2fcadec08591341f97707c07c0e (diff)
round allocated struct return space to sizeof(size_t)
this fixes the sfx2 subsequenttest
Diffstat (limited to 'binaryurp')
-rw-r--r--binaryurp/source/incomingrequest.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/binaryurp/source/incomingrequest.cxx b/binaryurp/source/incomingrequest.cxx
index 646a868f66fd..e6dde0683c8e 100644
--- a/binaryurp/source/incomingrequest.cxx
+++ b/binaryurp/source/incomingrequest.cxx
@@ -131,6 +131,11 @@ void IncomingRequest::execute() const {
}
}
+static size_t size_t_round(size_t val)
+{
+ return (val + (sizeof(size_t)-1)) & ~(sizeof(size_t)-1);
+}
+
bool IncomingRequest::execute_throw(
BinaryAny * returnValue, std::vector< BinaryAny > * outArguments) const
{
@@ -246,7 +251,10 @@ bool IncomingRequest::execute_throw(
OSL_ASSERT(false); // this cannot happen
break;
}
- std::vector< char > retBuf(retType.is() ? retType.get()->nSize : 0);
+ size_t nSize = 0;
+ if (retType.is())
+ nSize = size_t_round(retType.get()->nSize);
+ std::vector< char > retBuf(nSize);
uno_Any exc;
uno_Any * pexc = &exc;
(*object_.get()->pDispatcher)(