← Back to index
|
Original Bugzilla link
Bug 14860 – Destructor is not called for block assignment
Status
RESOLVED
Resolution
FIXED
Severity
major
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2015-08-02T02:03:00Z
Last change time
2017-07-22T12:36:16Z
Keywords
pull, wrong-code
Assigned to
nobody
Creator
k.hara.pg
Comments
Comment #0
by k.hara.pg — 2015-08-02T02:03:56Z
It's similar to 14815. From:
http://forum.dlang.org/thread/
[email protected]
uint dtorCount; struct S { uint x; void opAssign(const ref S rhs) { assert(false, "Not called"); } ~this() { ++dtorCount; } } void main() { S[] a; a.length = 1; a[0].x = 42; // Some random non-init value a[] = S.init; assert(a[0].x == 0); // As expected, the value has been reset assert(dtorCount == 0); // Passes?!? }
Comment #1
by k.hara.pg — 2015-08-02T04:35:46Z
https://github.com/D-Programming-Language/dmd/pull/4856
Comment #2
by github-bugzilla — 2015-08-02T11:07:55Z
Commits pushed to master at
https://github.com/D-Programming-Language/phobos
https://github.com/D-Programming-Language/phobos/commit/35f1f6226aa523305e41f3dee68fbb0ce8fafdf4
Supplemental fix for issue 14860 `task[] = RTask.init;` has two bugs: 1. `RTask` is a nested struct, so `RTask.init` contains null context pointer. 2. That is a block assignment, so there is a possibility to call `RTask.~this()` on garbage objects (stack allocated `buf` is initialized by `void`). Fixed to use `emplaceRef` on each elements.
https://github.com/D-Programming-Language/phobos/commit/deeab6c867fbed479fe57604a52f25e360f0b410
Merge pull request #3522 from 9rnsr/fix14860 Supplemental fix for issue 14860
Comment #3
by github-bugzilla — 2015-08-02T14:58:52Z
Commits pushed to master at
https://github.com/D-Programming-Language/dmd
https://github.com/D-Programming-Language/dmd/commit/fd8af3a98e1deb370aecf940c939f8a7794a850e
fix Issue 14860 - Destructor is not called for block assignment
https://github.com/D-Programming-Language/dmd/commit/286906ba8ffe9e75905998fd99a6349b7a0f6b4e
Merge pull request #4856 from 9rnsr/fix14860 Issue 14860 - Destructor is not called for block assignment
Comment #4
by github-bugzilla — 2015-10-04T18:20:09Z
Commits pushed to stable at
https://github.com/D-Programming-Language/phobos
https://github.com/D-Programming-Language/phobos/commit/35f1f6226aa523305e41f3dee68fbb0ce8fafdf4
Supplemental fix for issue 14860
https://github.com/D-Programming-Language/phobos/commit/deeab6c867fbed479fe57604a52f25e360f0b410
Merge pull request #3522 from 9rnsr/fix14860
Comment #5
by github-bugzilla — 2017-07-22T12:36:16Z
Commits pushed to dmd-cxx at
https://github.com/dlang/dmd
https://github.com/dlang/dmd/commit/fd8af3a98e1deb370aecf940c939f8a7794a850e
fix Issue 14860 - Destructor is not called for block assignment
https://github.com/dlang/dmd/commit/286906ba8ffe9e75905998fd99a6349b7a0f6b4e
Merge pull request #4856 from 9rnsr/fix14860