CWS-TOOLING: integrate CWS ab81

This commit is contained in:
Ivo Hinkelmann 2011-02-28 17:06:12 +01:00
commit 4881d3fe8c
2 changed files with 13 additions and 6 deletions

View file

@ -36,6 +36,7 @@
#include "basic/sbx.hxx"
#include "basic/sbxvar.hxx"
#include "runtime.hxx"
#include "osl/thread.h"
#include "rtl/ref.hxx"
#include "rtl/string.hxx"
@ -266,9 +267,15 @@ SbError marshal(
std::vector< char > & blob, std::size_t offset, MarshalData & data)
{
OSL_ASSERT(variable != 0);
if ((variable->GetFlags() & SBX_REFERENCE) == 0) {
if ((variable->GetType() & SbxARRAY) == 0) {
switch (variable->GetType()) {
SbxDataType eVarType = variable->GetType();
bool bByVal = (variable->GetFlags() & SBX_REFERENCE) == 0;
if( !bByVal && !SbiRuntime::isVBAEnabled() && eVarType == SbxSTRING )
bByVal = true;
if (bByVal) {
if ((eVarType & SbxARRAY) == 0) {
switch (eVarType) {
case SbxINTEGER:
add(blob, variable->GetInteger(), outer ? 4 : 2, offset);
break;
@ -317,8 +324,8 @@ SbError marshal(
}
}
} else {
if ((variable->GetType() & SbxARRAY) == 0) {
switch (variable->GetType()) {
if ((eVarType & SbxARRAY) == 0) {
switch (eVarType) {
case SbxINTEGER:
case SbxLONG:
case SbxSINGLE:

View file

@ -521,7 +521,7 @@ SbxVariable* SbiRuntime::CheckArray( SbxVariable* pElem )
pPar->Put( NULL, 0 );
}
// Index-Access bei UnoObjekten beruecksichtigen
else if( pElem->GetType() == SbxOBJECT && (!pElem->ISA(SbxMethod) || !pElem->IsBroadcaster()) )
else if( pElem->GetType() == SbxOBJECT && (!pElem->ISA(SbxMethod) || (bVBAEnabled && !pElem->IsBroadcaster()) ) )
{
pPar = pElem->GetParameters();
if ( pPar )