diff options
Diffstat (limited to 'patches/vba/fix-vba-NOT-trigger-update.diff')
-rw-r--r-- | patches/vba/fix-vba-NOT-trigger-update.diff | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/patches/vba/fix-vba-NOT-trigger-update.diff b/patches/vba/fix-vba-NOT-trigger-update.diff deleted file mode 100644 index 63fe5e122..000000000 --- a/patches/vba/fix-vba-NOT-trigger-update.diff +++ /dev/null @@ -1,87 +0,0 @@ -diff --git basic/source/runtime/runtime.cxx basic/source/runtime/runtime.cxx -index 5cec3e2..69c75b3 100644 ---- basic/source/runtime/runtime.cxx -+++ basic/source/runtime/runtime.cxx -@@ -48,6 +48,8 @@ - #include "sbunoobj.hxx" - #include "errobject.hxx" - -+SbxVariable* getDefaultProp( SbxVariable* pRef ); -+ - bool SbiRuntime::isVBAEnabled() - { - bool result = false; -@@ -961,7 +963,25 @@ SbxVariable* SbiRuntime::GetTOS( short n - void SbiRuntime::TOSMakeTemp() - { - SbxVariable* p = refExprStk->Get( nExprLvl - 1 ); -- if( p->GetRefCount() != 1 ) -+ if ( p->GetType() == SbxEMPTY ) -+ p->Broadcast( SBX_HINT_DATAWANTED ); -+ -+ SbxVariable* pDflt = NULL; -+ if ( bVBAEnabled && ( p->GetType() == SbxOBJECT || p->GetType() == SbxVARIANT ) && ( pDflt = getDefaultProp( p ) ) ) -+ { -+ pDflt->Broadcast( SBX_HINT_DATAWANTED ); -+ // replacing new p on stack causes object pointed by -+ // pDft->pParent to be deleted, when p2->Compute() is -+ // called below pParent is accessed ( but its deleted ) -+ // so set it to NULL now -+ pDflt->SetParent( NULL ); -+ p = new SbxVariable( *pDflt ); -+ p->SetFlag( SBX_READWRITE ); -+ refExprStk->Put( p, nExprLvl - 1 ); -+// return; -+ } -+ -+ else if( p->GetRefCount() != 1 ) - { - SbxVariable* pNew = new SbxVariable( *p ); - pNew->SetFlag( SBX_READWRITE ); -@@ -970,7 +990,6 @@ void SbiRuntime::TOSMakeTemp() - } - - // Der GOSUB-Stack nimmt Returnadressen fuer GOSUBs auf -- - void SbiRuntime::PushGosub( const BYTE* pc ) - { - if( ++nGosubLvl > MAXRECURSION ) -diff --git basic/source/runtime/step0.cxx basic/source/runtime/step0.cxx -index cbd2fad..0666725 100644 ---- basic/source/runtime/step0.cxx -+++ basic/source/runtime/step0.cxx -@@ -59,34 +59,6 @@ void SbiRuntime::StepArith( SbxOperator - TOSMakeTemp(); - SbxVariable* p2 = GetTOS(); - -- -- // This could & should be moved to the MakeTempTOS() method in runtime.cxx -- // In the code which this is cut'npaste from there is a check for a ref -- // count != 1 based on which the copy of the SbxVariable is done. -- // see orig code in MakeTempTOS ( and I'm not sure what the significance, -- // of that is ) -- // here we alway seem to have a refcount of 1. Also it seems that -- // MakeTempTOS is called for other operation, so I hold off for now -- // until I have a better idea -- if ( bVBAEnabled -- && ( p2->GetType() == SbxOBJECT || p2->GetType() == SbxVARIANT ) -- ) -- { -- SbxVariable* pDflt = getDefaultProp( p2 ); -- if ( pDflt ) -- { -- pDflt->Broadcast( SBX_HINT_DATAWANTED ); -- // replacing new p2 on stack causes object pointed by -- // pDft->pParent to be deleted, when p2->Compute() is -- // called below pParent is accessed ( but its deleted ) -- // so set it to NULL now -- pDflt->SetParent( NULL ); -- p2 = new SbxVariable( *pDflt ); -- p2->SetFlag( SBX_READWRITE ); -- refExprStk->Put( p2, nExprLvl - 1 ); -- } -- } -- - p2->ResetFlag( SBX_FIXED ); - p2->Compute( eOp, *p1 ); - |