summaryrefslogtreecommitdiff
path: root/oox/source/ole/vbaexport.cxx
diff options
context:
space:
mode:
authorRosemary <rosemaryseb8@gmail.com>2015-08-14 08:37:43 +0530
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-09-10 02:12:30 +0200
commit16063f5073c7e661cf3dc1412630db8952a55d2c (patch)
tree994cd996cdbd3641d3d1b4e9c476b1ebf04d492c /oox/source/ole/vbaexport.cxx
parent5f1ecef8d192e224d8f89d39c9ffd913ca4df5ba (diff)
next reference record
Conflicts: oox/source/ole/vbaexport.cxx Change-Id: Ie7efdc2cabac43ea06ca9ba84b634fc2cb1ddd54
Diffstat (limited to 'oox/source/ole/vbaexport.cxx')
-rw-r--r--oox/source/ole/vbaexport.cxx32
1 files changed, 19 insertions, 13 deletions
diff --git a/oox/source/ole/vbaexport.cxx b/oox/source/ole/vbaexport.cxx
index 85c4352da1d6..246a2346b664 100644
--- a/oox/source/ole/vbaexport.cxx
+++ b/oox/source/ole/vbaexport.cxx
@@ -488,38 +488,44 @@ void writePROJECTINFORMATION(SvStream& rStrm)
}
// section 2.3.4.2.2.2
-void writeREFERENCENAME(SvStream& rStrm)
+void writeREFERENCENAME(SvStream& rStrm, const OUString name)
{
rStrm.WriteUInt16(0x0016); // id
- rStrm.WriteUInt32(6); // sizeOfName
- exportString(rStrm, "stdole"); // name // TODO: find out where these values are coming from
+ sal_Int32 size = name.getLength();
+ rStrm.WriteUInt32(size); // sizeOfName
+ exportString(rStrm, name); // name
rStrm.WriteUInt16(0x003E); // reserved
- rStrm.WriteUInt32(12); // sizeOfNameUnicode
- exportUTF16String(rStrm, "stdole"); // nameUnicode // TODO find out where these values are coming from
+ sal_Int32 unicodesize = size * 2;
+ rStrm.WriteUInt32(unicodesize); // sizeOfNameUnicode
+ exportUTF16String(rStrm, name); // nameUnicode
}
// section 2.3.4.2.2.5
-void writeREFERENCEREGISTERED(SvStream& rStrm)
+void writeREFERENCEREGISTERED(SvStream& rStrm, const OUString libid)
{
rStrm.WriteUInt16(0x000D); // id
- rStrm.WriteUInt32(104); // size of sizeOfLibid, Libid, reserved 1 and reserved 2
- rStrm.WriteUInt32(94); // sizeOfLibid
- exportString(rStrm, "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\SysWOW64\\stdole2.tlb#OLE Automation");
+ sal_Int32 sizeOfLibid = libid.getLength();
+ sal_Int32 size = sizeOfLibid + 10; // size of Libid, sizeOfLibid(4 bytes), reserved 1(4 bytes) and reserved 2(2 bytes)
+ rStrm.WriteUInt32(size); // size
+ rStrm.WriteUInt32(sizeOfLibid); // sizeOfLibid
+ exportString(rStrm, libid); // Libid
rStrm.WriteUInt32(0x00000000); // reserved 1
rStrm.WriteUInt16(0x0000); // reserved 2
}
// section 2.3.4.2.2.1
-void writeREFERENCE(SvStream& rStrm)
+void writeREFERENCE(SvStream& rStrm, const OUString name, const OUString libid)
{
- writeREFERENCENAME(rStrm);
- writeREFERENCEREGISTERED(rStrm);
+ writeREFERENCENAME(rStrm, name);
+ writeREFERENCEREGISTERED(rStrm, libid);
}
// section 2.3.4.2.2
void writePROJECTREFERENCES(SvStream& rStrm)
{
- writeREFERENCE(rStrm);
+ // TODO: find out where these references are coming from
+ writeREFERENCE(rStrm, "stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\SysWOW64\\stdole2.tlb#OLE Automation");
+ writeREFERENCE(rStrm, "Office", "*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");
}
// section 2.3.4.2