Thread overview | ||||||
---|---|---|---|---|---|---|
|
January 18, 2013 Memory corruption bug in struct dtor | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=9352 Seems like dtors are a minefield of hidden and dangerous bugs, due to them not being used (and therefore tested) very often. :-/ T -- Lawyer: (n.) An innocence-vending machine, the effectiveness of which depends on how much money is inserted. |
January 18, 2013 Re: Memory corruption bug in struct dtor | ||||
---|---|---|---|---|
| ||||
Posted in reply to H. S. Teoh | Note that upon further investigation, the problem seems to be more about delegates than dtors. The delegate can point to the wrong struct, or to locals instead of the struct... but you can "access" both; it compiles, but does the wrong thing. We're talking in the bugzilla as well as here: https://github.com/robik/ConsoleD/issues/3 |
January 22, 2013 Re: Memory corruption bug in struct dtor | ||||
---|---|---|---|---|
| ||||
Posted in reply to H. S. Teoh | On Friday, 18 January 2013 at 20:14:23 UTC, H. S. Teoh wrote: > http://d.puremagic.com/issues/show_bug.cgi?id=9352 > > Seems like dtors are a minefield of hidden and dangerous bugs, Yes. It's one of the worst areas. Postblit as well. > due to > them not being used (and therefore tested) very often. :-/ Not really. It's because it's an intrinsically difficult concept. The destructor is called at end-of-life of the struct. This means that in every possible part of the language, you have to know what the end-of-life is. So interaction with other parts of the language is inevitable, there's an explosion of special cases. (By contrast, something like 'pure' is a very simple language feature: you just need to iterate over all the code that's marked pure, and generate an error if you find anything that isn't pure). |
January 22, 2013 Re: Memory corruption bug in struct dtor | ||||
---|---|---|---|---|
| ||||
Posted in reply to Don | Don:
> (By contrast, something like 'pure' is a very simple language feature: you just need to iterate over all the code that's marked pure, and generate an error if you find anything that isn't pure).
D "pure" has required several iterations, and the design of its details is not finished yet (see Bugzilla)...
Bye,
bearophile
|
Copyright © 1999-2021 by the D Language Foundation