Skip to content

Commit d019239

Browse files
committed
Add Microsoft aligned variants to Windows proxy library
Add Microsoft aligned variants to Windows proxy library: - _aligned_malloc() - _aligned_realloc() - _aligned_recalloc() - _aligned_msize() - _aligned_free() - _aligned_offset_malloc() - _aligned_offset_realloc() - _aligned_offset_recalloc() and remove _free_dbg(). Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 34c584d commit d019239

File tree

2 files changed

+76
-9
lines changed

2 files changed

+76
-9
lines changed

src/proxy_lib/proxy_lib.c

Lines changed: 68 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,18 @@
1313
* - calloc()
1414
* - free()
1515
* - malloc()
16-
* - malloc_usable_size()
16+
* - malloc_usable_size() for Linux or _msize() for Windows
1717
* - realloc()
18+
*
19+
* Additionally for Windows only:
20+
* - _aligned_malloc()
21+
* - _aligned_realloc()
22+
* - _aligned_recalloc()
23+
* - _aligned_msize()
24+
* - _aligned_free()
25+
* - _aligned_offset_malloc()
26+
* - _aligned_offset_realloc()
27+
* - _aligned_offset_recalloc()
1828
*/
1929

2030
#if (defined PROXY_LIB_USES_JEMALLOC_POOL)
@@ -254,13 +264,6 @@ void free(void *ptr) {
254264
return;
255265
}
256266

257-
#ifdef _WIN32
258-
void _free_dbg(void *userData, int blockType) {
259-
(void)blockType; // unused
260-
free(userData);
261-
}
262-
#endif
263-
264267
void *realloc(void *ptr, size_t size) {
265268
if (ptr == NULL) {
266269
return malloc(size);
@@ -318,3 +321,60 @@ size_t malloc_usable_size(void *ptr) {
318321

319322
return 0; // unsupported in this case
320323
}
324+
325+
// Add Microsoft aligned variants
326+
#ifdef _WIN32
327+
328+
void *_aligned_malloc(size_t size, size_t alignment) {
329+
return aligned_alloc(alignment, size);
330+
}
331+
332+
void *_aligned_realloc(void *ptr, size_t size, size_t alignment) {
333+
if (alignment == 0) {
334+
return realloc(ptr, size);
335+
}
336+
return NULL; // not supported in this case
337+
}
338+
339+
void *_aligned_recalloc(void *ptr, size_t num, size_t size, size_t alignment) {
340+
(void)ptr; // unused
341+
(void)num; // unused
342+
(void)size; // unused
343+
(void)alignment; // unused
344+
return NULL; // not supported
345+
}
346+
347+
size_t _aligned_msize(void *ptr, size_t alignment, size_t offset) {
348+
(void)alignment; // unused
349+
(void)offset; // unused
350+
return _msize(ptr);
351+
}
352+
353+
void _aligned_free(void *ptr) { free(ptr); }
354+
355+
void *_aligned_offset_malloc(size_t size, size_t alignment, size_t offset) {
356+
if (offset == 0) {
357+
return aligned_alloc(alignment, size);
358+
}
359+
return NULL; // not supported in this case
360+
}
361+
362+
void *_aligned_offset_realloc(void *ptr, size_t size, size_t alignment,
363+
size_t offset) {
364+
if (alignment == 0 && offset == 0) {
365+
return realloc(ptr, size);
366+
}
367+
return NULL; // not supported in this case
368+
}
369+
370+
void *_aligned_offset_recalloc(void *ptr, size_t num, size_t size,
371+
size_t alignment, size_t offset) {
372+
(void)ptr; // unused
373+
(void)num; // unused
374+
(void)size; // unused
375+
(void)alignment; // unused
376+
(void)offset; // unused
377+
return NULL; // not supported
378+
}
379+
380+
#endif

src/proxy_lib/proxy_lib.def

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,15 @@ EXPORTS
99
DllMain
1010
aligned_alloc
1111
calloc
12-
_free_dbg
1312
free
1413
malloc
1514
_msize
1615
realloc
16+
_aligned_malloc
17+
_aligned_realloc
18+
_aligned_recalloc
19+
_aligned_msize
20+
_aligned_free
21+
_aligned_offset_malloc
22+
_aligned_offset_realloc
23+
_aligned_offset_recalloc

0 commit comments

Comments
 (0)