WebKit и нпапи и mingw-w64 - PullRequest
       9

WebKit и нпапи и mingw-w64

0 голосов
/ 18 апреля 2010

Проблема заключается в следующем: В Windows x64 указатели являются 64-разрядными, а тип long - 32-разрядными. MSVC, кажется, не заботится, и даже пропускает предупреждения об усечении указателя на уровне предупреждений по умолчанию. С недавних пор существует GCC, предназначенный для x86_64-w64-mingw32, или лучше родной Windows x64. GCC выдает ошибки, когда указатели усекаются (что логично сделать ...), и это вызывает проблемы в WebKit и, более конкретно, в API-интерфейсе плагина Netscape: Во-первых, есть файлы (я могу опубликовать только одну гиперссылку ...):
http://trac.webkit.org/browser/trunk/WebCore/
bridge / npapi.h -> определяет uint32 как 32-битный тип int (~ строка 145)
plugins / win / PluginViewWin.cpp -> переводит дескрипторы окна Windows в 32-битное целое, обрезая их (~ строка 450)

Мое предлагаемое исправление состояло в том, чтобы изменить приведение uint32 к uintptr_t, что делает GCC счастливым, но все же помещает 64-разрядное значение в uint32 (= unsigned long). Я понятия не имею, как решить эту проблему, потому что ясно, что WebKit счастлив усекать указатели на Win64 ...

Как я могу решить это правильно? Спасибо!

1 Ответ

0 голосов
/ 18 апреля 2010

Для всех, кто меня заинтересовал, я изменил lparam, wparam для uint32 на uintptr_t. Это признак, видимый только в Windows, где это, безусловно, правильное исправление ИМХО.

...