On 6/11/18 4:00 AM, Walter Bright wrote:
(I notice it is doing __doPostblit(). This looks wrong, D allows data to
be moved. As far as I can tell with a perfunctory examination, that's
the only "can throw" bit.)
No, __doPostblit is necessary -- you are making a copy.
example:
File[] fs = new File[5];
fs[0] = ...; // initialize fs
auto fs2 = fs;
fs.length = 100;
At this point, fs points at a separate block from fs2. If you did not do
postblit on this, then when one of those arrays is destroyed, the other
will become invalid, as the File reference count would go to 0.
-Steve