Thanks, all of you.
Now, everything is clear.
Daebark
On Thu, Nov 11, 2010 at 2:24 AM, Finnur Thorarinsson fin...@chromium.orgwrote:
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