http://d.puremagic.com/issues/show_bug.cgi?id=6234

           Summary: 64-bit array append generates inline code to copy new
                    data, but does not call postblit
           Product: D
           Version: D2
          Platform: x86_64
        OS/Version: All
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: schvei...@yahoo.com


--- Comment #0 from Steven Schveighoffer <schvei...@yahoo.com> 2011-07-01 
05:38:11 PDT ---
The 64-bit compiler no longer calls _d_arrayappendT directly, it now calls
_d_arrayappendCTX, which does *not* copy the new data to the array.

This is fine, because the compiler generates the necessary code to copy the new
data.  However, the compiler does *not* call postblit on that data.

Two ways to fix this:

1. Simply switch to calling _d_arrayappendT again, and don't do the copying
inline.
2. Insert a call to __doPostblit (or whatever you want to rename it, it's in
rt/lifetime.d) after copying the data, but only if the type *has* a valid
postblit.

This is the reason the runtime is currently failing unit tests on 64-bit code.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to