summaryrefslogtreecommitdiff
path: root/basic
diff options
context:
space:
mode:
Diffstat (limited to 'basic')
-rw-r--r--basic/source/classes/image.cxx6
-rw-r--r--basic/source/classes/sbxmod.cxx5
-rw-r--r--basic/source/inc/filefmt.hxx30
-rw-r--r--basic/source/uno/scriptcont.cxx5
4 files changed, 35 insertions, 11 deletions
diff --git a/basic/source/classes/image.cxx b/basic/source/classes/image.cxx
index 703dbd41b7e1..3faabae95793 100644
--- a/basic/source/classes/image.cxx
+++ b/basic/source/classes/image.cxx
@@ -240,13 +240,13 @@ bool SbiImage::Load( SvStream& r, sal_uInt32& nVersion )
}
break;
}
- case B_SBXOBJECTS:
+ case B_USERTYPES:
{
//assuming an empty string with just the lead 32bit/16bit len indicator
const size_t nMinStringSize = (eCharSet == RTL_TEXTENCODING_UNICODE) ? 4 : 2;
const size_t nMinRecordSize = nMinStringSize + sizeof(sal_Int16);
const size_t nMaxRecords = r.remainingSize() / nMinRecordSize;
- if (nCount > nMinRecordSize)
+ if (nCount > nMaxRecords)
{
SAL_WARN("basic", "Parsing error: " << nMaxRecords <<
" max possible entries, but " << nCount << " claimed, truncating");
@@ -458,7 +458,7 @@ bool SbiImage::Save( SvStream& r, sal_uInt32 nVer )
sal_uInt16 nTypes = rTypes->Count();
if (nTypes > 0 )
{
- nPos = SbiOpenRecord( r, B_SBXOBJECTS, nTypes );
+ nPos = SbiOpenRecord( r, B_USERTYPES, nTypes );
for (sal_uInt16 i = 0; i < nTypes; i++)
{
diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx
index 364199cae1ec..5dc17c04ef41 100644
--- a/basic/source/classes/sbxmod.cxx
+++ b/basic/source/classes/sbxmod.cxx
@@ -1803,11 +1803,6 @@ bool SbModule::HasExeCode()
}
// Store only image, no source
-bool SbModule::StoreBinaryData( SvStream& rStrm )
-{
- return StoreBinaryData( rStrm, 0 );
-}
-
bool SbModule::StoreBinaryData( SvStream& rStrm, sal_uInt16 nVer )
{
bool bRet = Compile();
diff --git a/basic/source/inc/filefmt.hxx b/basic/source/inc/filefmt.hxx
index 9b294a8c2028..db0b1f6e919f 100644
--- a/basic/source/inc/filefmt.hxx
+++ b/basic/source/inc/filefmt.hxx
@@ -38,10 +38,13 @@ class SvStream;
// Version F: #57844 introduction of SvNumberformat::StringToDouble
// Version 10: #29955 generate for-loop-level in Statement-PCodes
// Version 11: #29955 force anew compilation because of build-inconsistences
+// Version 12: aoo#64377 increase code size that basic can handle
+// tdf#75973 support user defined types B_USERTYPES in password protected macros
+//
#define B_LEGACYVERSION 0x00000011L
-#define B_CURVERSION 0x00000012L
#define B_EXT_IMG_VERSION 0x00000012L
+#define B_CURVERSION 0x00000012L
// The file contains either a module- or a library-record.
// Those records contain further records. Every record's got
@@ -69,6 +72,9 @@ class SvStream;
#define B_SBXOBJECTS 0x5853 // SX SBX objects
#define B_EXTSOURCE 0x5345 // ES extended source
+#define B_USERTYPES 0x4369 // UT user defined types
+
+
// A library record contains only module records
// sal_uInt16 identifier BL
// sal_uInt32 the record's length
@@ -153,6 +159,28 @@ class SvStream;
// sal_uInt16 number of objects
// .... object data
+// user defined types B_USERTYPES :
+// sal_uInt16 identifier UT
+// sal_uInt32 the record's length
+// sal_uInt16 number of types
+// Data for every user defined type:
+// string instance type name
+// sal_Int16 number of type members
+// Data for every type member:
+// string name
+// sal_Int16 type
+// sal_uInt32 flags
+// sal_Int16 hasObjects (0/1)
+// If hasObjects
+// If member type is nested type
+// string nested type name
+// Else (array declaration)
+// sal_Int16 isFixedSize (0/1)
+// sal_Int32 number of dimensions
+// Data for every dimension:
+// sal_Int32 lower bound
+// sal_Int32 upper bound
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basic/source/uno/scriptcont.cxx b/basic/source/uno/scriptcont.cxx
index c7df851a09e3..91ecc7057b3b 100644
--- a/basic/source/uno/scriptcont.cxx
+++ b/basic/source/uno/scriptcont.cxx
@@ -18,6 +18,7 @@
*/
#include "scriptcont.hxx"
+#include <filefmt.hxx>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/xml/sax/Parser.hpp>
#include <com/sun/star/xml/sax/InputSource.hpp>
@@ -623,7 +624,7 @@ bool SfxScriptLibraryContainer::implStorePasswordLibrary( SfxLibrary* pLib, cons
throw uno::RuntimeException();
}
SvMemoryStream aMemStream;
- /*sal_Bool bStore = */pMod->StoreBinaryData( aMemStream );
+ /*sal_Bool bStore = */pMod->StoreBinaryData( aMemStream, B_CURVERSION );
sal_Size nSize = aMemStream.Tell();
Sequence< sal_Int8 > aBinSeq( nSize );
@@ -766,7 +767,7 @@ bool SfxScriptLibraryContainer::implStorePasswordLibrary( SfxLibrary* pLib, cons
embed::ElementModes::WRITE | embed::ElementModes::TRUNCATE );
SvMemoryStream aMemStream;
- /*sal_Bool bStore = */pMod->StoreBinaryData( aMemStream );
+ /*sal_Bool bStore = */pMod->StoreBinaryData( aMemStream, B_CURVERSION );
sal_Size nSize = aMemStream.Tell();
Sequence< sal_Int8 > aBinSeq( nSize );