Thanks, all of you. Now, everything is clear. Daebark
On Thu, Nov 11, 2010 at 2:24 AM, Finnur Thorarinsson <fin...@chromium.org>wrote: > Umm... shouldn't this behavior be commented so that people are not left > wondering why it fails and trying to "fix" it? > > On Wed, Nov 10, 2010 at 16:04, Darin Adler <da...@apple.com> wrote: > >> On Nov 10, 2010, at 2:33 PM, Daebarkee Jung wrote: >> >> > I found that the following lines made errors: >> > // OwnPtrCommon.h >> > template <typename T> inline void deleteOwnedPtr(T* ptr) >> > { >> > typedef char known[sizeof(T) ? 1 : -1]; >> > if (sizeof(known)) >> > delete ptr; >> > } >> > >> > I am very curious about why the author wrote like the above. >> > What could be the author's intention? >> >> The code is to prevent issues like the ones described on these websites: >> >> http://stackoverflow.com/questions/1767679/incomplete-type-memory-leaks >> >> http://bytes.com/topic/c/answers/611877-gcc-class-forward-declarations-destructor-calls >> >> http://connect.microsoft.com/VisualStudio/feedback/details/231177/delete-of-pointer-to-incomplete-class >> >> If we delete a pointer and the object has incomplete type, we get >> undefined behavior. Instead this code causes compilation to fail if the >> object has incomplete type. The use of a negative number for the size of an >> array is a way to guarantee we get a compilation error. >> >> Your alternate version might also work; I’m not sure. >> >> -- Darin >> >> _______________________________________________ >> webkit-dev mailing list >> webkit-dev@lists.webkit.org >> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev >> > >
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev