diff --git a/BurnOutSharp/External/libgsf/Input/GsfInfileMSVBA.cs b/BurnOutSharp/External/libgsf/Input/GsfInfileMSVBA.cs
index e6083032..ad6a6642 100644
--- a/BurnOutSharp/External/libgsf/Input/GsfInfileMSVBA.cs
+++ b/BurnOutSharp/External/libgsf/Input/GsfInfileMSVBA.cs
@@ -65,7 +65,7 @@ namespace LibGSF.Input
#endregion
- #region Constructor
+ #region Constructor and Destructor
///
/// Private constructor
@@ -83,7 +83,7 @@ namespace LibGSF.Input
};
// Find the name offset pairs
- if (vba.Read(ref err))
+ if (vba.DirectoryRead(ref err))
return vba;
if (err != null)
@@ -92,6 +92,21 @@ namespace LibGSF.Input
return null;
}
+ ///
+ /// Destructor
+ ///
+ ~GsfInfileMSVBA()
+ {
+ if (Modules != null)
+ {
+ Modules.Clear();
+ Modules = null;
+ }
+
+ if (Source != null)
+ Source = null;
+ }
+
#endregion
#region Functions
@@ -114,15 +129,15 @@ namespace LibGSF.Input
public static GsfInfileMSVBA FindVBA(GsfInput input, ref Exception err)
{
GsfInput vba = null;
- GsfInfile infile;
- if ((infile = GsfInfileMSOle.Create(input, ref err)) != null)
+ GsfInfile infile = GsfInfileMSOle.Create(input, ref err);
+ if (infile != null)
{
// 1) Try XLS
vba = infile.ChildByVariableName("_VBA_PROJECT_CUR", "VBA");
// 2) DOC
- if (null == vba)
+ if (vba == null)
vba = infile.ChildByVariableName("Macros", "VBA");
// TODO : PPT is more complex
@@ -162,8 +177,7 @@ namespace LibGSF.Input
if (module == null)
return;
- byte[] code = module.InflateMSVBA(src_offset, out _, false);
-
+ byte[] code = module.InflateMSVBA(src_offset, out int inflatedSize, false);
if (code != null)
{
if (Modules == null)
@@ -183,7 +197,7 @@ namespace LibGSF.Input
///
/// Place to store an Exception if anything goes wrong
/// false on error setting if it is supplied.
- private bool Read(ref Exception err)
+ private bool DirectoryRead(ref Exception err)
{
int element_count = -1;
string name, elem_stream = null;
@@ -209,7 +223,7 @@ namespace LibGSF.Input
// 2. GUESS : based on several xls with macros and XL8GARY this looks like a
// series of sized records. Be _extra_ careful
- ushort tag = 0;
+ ushort tag;
do
{
/* I have seen
@@ -248,16 +262,24 @@ namespace LibGSF.Input
if ((ptr + 6) > end)
{
+ //#ifdef OLD_VBA_DUMP
+ //puts("");
+ //#endif
+
err = new Exception("VBA project header problem");
return false;
}
- tag = GSF_LE_GET_GUINT16(inflated_data, ptr);
+ tag = GSF_LE_GET_GUINT16(inflated_data, ptr);
uint len = GSF_LE_GET_GUINT32(inflated_data, ptr + 2);
ptr += 6;
if ((ptr + len) > end)
{
+ //#ifdef OLD_VBA_DUMP
+ //puts("");
+ //#endif
+
err = new Exception("VBA project header problem");
return false;
}
@@ -266,6 +288,12 @@ namespace LibGSF.Input
{
case 4:
name = Encoding.UTF8.GetString(inflated_data, ptr, (int)len);
+
+ //#ifdef OLD_VBA_DUMP
+ //puts("");
+ //printf("", name);
+ //#endif
+
break;
case 9:
@@ -297,12 +325,16 @@ namespace LibGSF.Input
case 0x33: break;
case 0x3e: break;
case 0x16:
+ //name = g_strndup(ptr, len);
+ //g_print("Depend Name : '%s'\n", name);
break;
// Elements
case 0x47: break;
case 0x32: break;
case 0x1a:
+ //name = g_strndup(ptr, len);
+ //g_print("Element Name : '%s'\n", name);
break;
case 0x19:
@@ -322,6 +354,8 @@ namespace LibGSF.Input
break;
default:
+ //g_print("tag %hx : len %u\n", tag, len);
+ //gsf_mem_dump(ptr, len);
break;
}