2010-04-18 35 views
0

问题如下: 在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上快乐的截断指针...

我该如何解决这个问题?谢谢!

回答

0

对于任何有兴趣的人,我已将uint32 lparam,wparam更改为uintptr_t's。这是一个只在Windows中可见的cange,它当然是正确的修正恕我直言。

+0

该修补程序已被接受,现在位于Mozilla中继站和Webkit主站 – rubenvb 2010-05-19 20:40:57