[webkit-dev] deleteOwnedPtr(T* ptr)
Daebarkee Jung
daebarkee at gmail.com
Thu Nov 11 05:28:37 PST 2010
Thanks, all of you.
Now, everything is clear.
Daebark
On Thu, Nov 11, 2010 at 2:24 AM, Finnur Thorarinsson <finnur at 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 <darin at 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 at lists.webkit.org
>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20101111/c6cd115b/attachment.html>
More information about the webkit-dev
mailing list