Skip to content

Commit 6667ce4

Browse files
author
Vyacheslav
committed
fix: IntPtr must be a valid structure
1 parent 0e8cc0d commit 6667ce4

File tree

1 file changed

+44
-4
lines changed

1 file changed

+44
-4
lines changed

Src/StackMemoryCollections/GenerateWrappers.cs

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,22 @@ in string sizeOfStr
105105
for (int i = 0; i < typeInfo.Members.Count; i++)
106106
{
107107
var currentMember = typeInfo.Members[i];
108-
if (!currentMember.IsValueType)
108+
if (!currentMember.IsValueType && !currentMember.AsPointer)
109109
{
110110
builder.Append($@"
111111
//set null marker {currentMember.MemberName}
112112
*((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = 0;
113113
");
114+
continue;
115+
}
116+
117+
if(currentMember.AsPointer)
118+
{
119+
builder.Append($@"
120+
//IntPtr must be a valid structure, so write it down. Member: {currentMember.MemberName}
121+
*(IntPtr*)((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = IntPtr.Zero;
122+
");
123+
continue;
114124
}
115125
}
116126

@@ -149,12 +159,22 @@ in string sizeOfStr
149159
for (int i = 0; i < typeInfo.Members.Count; i++)
150160
{
151161
var currentMember = typeInfo.Members[i];
152-
if (!currentMember.IsValueType)
162+
if (!currentMember.IsValueType && !currentMember.AsPointer)
153163
{
154164
builder.Append($@"
155165
//set null marker {currentMember.MemberName}
156166
*((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = 0;
157167
");
168+
continue;
169+
}
170+
171+
if (currentMember.AsPointer)
172+
{
173+
builder.Append($@"
174+
//IntPtr must be a valid structure, so write it down. Member: {currentMember.MemberName}
175+
*(IntPtr*)((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = IntPtr.Zero;
176+
");
177+
continue;
158178
}
159179
}
160180

@@ -194,12 +214,22 @@ StackMemoryCollections.Class.StackMemory stackMemory
194214
for (int i = 0; i < typeInfo.Members.Count; i++)
195215
{
196216
var currentMember = typeInfo.Members[i];
197-
if (!currentMember.IsValueType)
217+
if (!currentMember.IsValueType && !currentMember.AsPointer)
198218
{
199219
builder.Append($@"
200220
//set null marker {currentMember.MemberName}
201221
*((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = 0;
202222
");
223+
continue;
224+
}
225+
226+
if (currentMember.AsPointer)
227+
{
228+
builder.Append($@"
229+
//IntPtr must be a valid structure, so write it down. Member: {currentMember.MemberName}
230+
*(IntPtr*)((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = IntPtr.Zero;
231+
");
232+
continue;
203233
}
204234
}
205235

@@ -245,12 +275,22 @@ bool createInstance
245275
for (int i = 0; i < typeInfo.Members.Count; i++)
246276
{
247277
var currentMember = typeInfo.Members[i];
248-
if (!currentMember.IsValueType)
278+
if (!currentMember.IsValueType && !currentMember.AsPointer)
249279
{
250280
builder.Append($@"
251281
//set null marker {currentMember.MemberName}
252282
*((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = 0;
253283
");
284+
continue;
285+
}
286+
287+
if (currentMember.AsPointer)
288+
{
289+
builder.Append($@"
290+
//IntPtr must be a valid structure, so write it down. Member: {currentMember.MemberName}
291+
*(IntPtr*)((byte*)_start + {(currentMember.IsRuntimeOffsetCalculated ? $"{currentType.Name}Helper.{currentMember.MemberName}Offset" : $"{currentMember.Offset}")}) = IntPtr.Zero;
292+
");
293+
continue;
254294
}
255295
}
256296

0 commit comments

Comments
 (0)