Bug 11446 – [GC] GC realloc doesn't ignore non-GC owned pointers

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
druntime
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-11-05T10:32:28Z
Last change time
2019-01-04T02:57:01Z
Keywords
pull
Assigned to
No Owner
Creator
safety0ff.bugz

Comments

Comment #0 by safety0ff.bugz — 2013-11-05T10:32:28Z
According to the documentation [1], GC.realloc should do nothing if passed a non-GC owned pointers. Currently if passed a non-zero size parameter along with the non-GC pointer it will allocate new memory and copy the contents. Discussion thread: http://forum.dlang.org/thread/[email protected] [1] http://dlang.org/phobos/core_memory.html#.GC.realloc
Comment #1 by r.sagitario — 2019-01-03T12:55:59Z
Comment #2 by github-bugzilla — 2019-01-04T02:57:00Z
Commit pushed to master at https://github.com/dlang/druntime https://github.com/dlang/druntime/commit/e6087c2fed9e49daaa72296bd951ea56efe82ec7 fix Issue 11393,11446 - [GC] GC realloc and free don't ignore interior/non-GC owned pointers change specification of GC.realloc to something more robust: - return null for failure (returning the original pointer is no indication of failure as it might also be returned on success. This can easily lead to overwriting memory) - allow freeing old memory immediately (previous implementation did this for large objects when shrinking) - only set attribute bits on existing block if reused (previous implementation didn't set bits if it reused a small block) refactor realloc to match that spec, add changelog, fix example