Skip to content

Commit c237730

Browse files
n8sh9il
authored andcommitted
Fix mir.internal.memory for 64-bit Windows plus fix unittest
1 parent b57ee66 commit c237730

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

source/mir/internal/memory.d

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ version (Windows)
6767
& ~(alignment - 1));
6868

6969
// write the header before the aligned pointer
70-
AlignInfo* head = AlignInfo!()(alignedPtr);
70+
AlignInfo!()* head = AlignInfo!()(alignedPtr);
7171
head.basePtr = basePtr;
7272
head.size = size;
7373

@@ -82,7 +82,7 @@ version (Windows)
8282
if (!ptr) return _aligned_malloc(size, alignment);
8383

8484
// gets the header from the exising pointer
85-
AlignInfo* head = AlignInfo(ptr);
85+
AlignInfo!()* head = AlignInfo!()(ptr);
8686

8787
// gets a new aligned pointer
8888
void* alignedPtr = _aligned_malloc(size, alignment);
@@ -104,14 +104,16 @@ version (Windows)
104104
private void _aligned_free()(void *ptr)
105105
{
106106
if (!ptr) return;
107-
AlignInfo* head = AlignInfo(ptr);
107+
AlignInfo!()* head = AlignInfo!()(ptr);
108108
free(head.basePtr);
109109
}
110110

111111
}
112112
// DMD Win 64 bit, uses microsoft standard C library which implements them
113113
else
114114
{
115+
private extern(C) void* _aligned_free(void *);
116+
private extern(C) void* _aligned_malloc(size_t, size_t);
115117
private extern(C) void* _aligned_realloc(void *, size_t, size_t);
116118
}
117119
}
@@ -199,11 +201,12 @@ unittest
199201
//...
200202
}
201203

204+
version (CRuntime_DigitalMars) version(unittest)
205+
private size_t addr(ref void* ptr) { return cast(size_t) ptr; }
206+
202207
version(CRuntime_DigitalMars)
203208
unittest
204209
{
205-
static size_t addr()(ref void* ptr) { return cast(size_t) ptr; }
206-
207210
void* m;
208211

209212
m = _aligned_malloc(16, 0x10);

0 commit comments

Comments
 (0)