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

Reply via email to