问题如下: 在Windows x64上,指针是64位,但long类型是32位。 MSVC似乎并不关心,甚至在默认警告级别上忽略关于指针截断的警告。 从最近开始,就有了一个针对x86_64-w64-mingw32或更好的本地Windows x64的GCC。当指针被截断时(这是合乎逻辑的事情......),GCC会产生错误,这会给WebKit带来麻烦,更具体地说,是Netscape Plugin API:首先,这里有文件(我只能发布一个超链接。 ..):
http://trac.webkit.org/browser/trunk/WebCore/
桥/ npapi.h - > UINT32定义为32位int型(〜线145)
插件/ WIN/PluginViewWin.cpp - >投射视窗窗口句柄到32位int,截断它们(〜450行)WebKit和npapi和mingw-w64
我建议的修复方法是将uint32强制转换为uintptr_t,这使GCC很开心,但仍然在uint32(= unsigned long)中放置了一个64位值。我不知道如何解决这个问题,因为很显然,WebKit是在Win64上快乐的截断指针...
我该如何解决这个问题?谢谢!
该修补程序已被接受,现在位于Mozilla中继站和Webkit主站 – rubenvb 2010-05-19 20:40:57