Skip to content

Commit 3fae52e

Browse files
authored
Merge pull request #22344 from gorsing/fixroot_array_memset
Fix debug stomping size and safety in Array
2 parents f2fcacb + 21e9cf7 commit 3fae52e

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

compiler/src/dmd/root/array.d

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ public:
5151

5252
~this() pure nothrow
5353
{
54-
debug (stomp) memset(data.ptr, 0xFF, data.length);
54+
debug (stomp)
55+
{
56+
if (data.ptr)
57+
memset(data.ptr, 0xFF, data.length * T.sizeof);
58+
}
5559
if (data.ptr && data.ptr != &smallarray[0])
5660
mem.xfree(data.ptr);
5761
}
@@ -209,14 +213,22 @@ public:
209213

210214
debug (stomp)
211215
{
212-
if (length < data.length)
213-
memset(data.ptr + length, 0xFF, (data.length - length) * T.sizeof);
216+
if (data.ptr)
217+
{
218+
if (length < data.length)
219+
memset(data.ptr + length, 0xFF, (data.length - length) * T.sizeof);
220+
}
214221
}
215222
else
216223
{
217224
if (mem.isGCEnabled)
218-
if (length < data.length)
219-
memset(data.ptr + length, 0xFF, (data.length - length) * T.sizeof);
225+
{
226+
if (data.ptr)
227+
{
228+
if (length < data.length)
229+
memset(data.ptr + length, 0xFF, (data.length - length) * T.sizeof);
230+
}
231+
}
220232
}
221233
}
222234

0 commit comments

Comments
 (0)