diff --git a/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs
index 640b409..5f31f1d 100644
--- a/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs
+++ b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs
@@ -35,12 +35,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
var codeGenerator = factory.Create(className, wszDefaultNamespace, bstrInputFileContents, codeDomProvider);
var code = codeGenerator.GenerateCode();
- var data = Encoding.UTF8.GetBytes(code);
-
- rgbOutputFileContents[0] = Marshal.AllocCoTaskMem(data.Length);
- Marshal.Copy(data, 0, rgbOutputFileContents[0], data.Length);
-
- pcbOutput = (uint)data.Length;
+ rgbOutputFileContents[0] = code.ConvertToIntPtr(out pcbOutput);
}
catch (Exception e)
{
diff --git a/RESW File Code Generator/VSPackage/CustomTool/StringExtension.cs b/RESW File Code Generator/VSPackage/CustomTool/StringExtension.cs
new file mode 100644
index 0000000..e4e35e1
--- /dev/null
+++ b/RESW File Code Generator/VSPackage/CustomTool/StringExtension.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
+{
+ public static class StringExtension
+ {
+ public static IntPtr ConvertToIntPtr(this string code, out uint pcbOutput)
+ {
+ var data = Encoding.Default.GetBytes(code);
+ pcbOutput = (uint)data.Length;
+
+ var ptr = Marshal.StringToCoTaskMemAuto(code);
+ return ptr;
+ }
+ }
+}
\ No newline at end of file
diff --git a/RESW File Code Generator/VSPackage/VSPackage.csproj b/RESW File Code Generator/VSPackage/VSPackage.csproj
index 53d0d8c..b210b53 100644
--- a/RESW File Code Generator/VSPackage/VSPackage.csproj
+++ b/RESW File Code Generator/VSPackage/VSPackage.csproj
@@ -130,6 +130,7 @@
+
True