clang -Wimplicit-fallthrough and missing breaks
Stephan Bergmann
sbergman at redhat.com
Wed May 25 07:20:23 UTC 2016
On 05/25/2016 09:01 AM, Tor Lillqvist wrote:
>
> --- a/vcl/opengl/win/gdiimpl.cxx
> +++ b/vcl/opengl/win/gdiimpl.cxx
> @@ -166,6 +166,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd,
> UINT message, WPARAM wParam, LPARAM l
> case VK_SPACE:
> break;
> }
> + SAL_FALLTHROUGH; //TODO ???
> default:
> return DefWindowProc(hwnd, message, wParam, lParam);
> }
>
>
> I did not write this code, but looking at it, it seems fairly obvious
> that the fall-through is intentional here. But it is beyond my
> understanding why such a temporary window, that is used only for some
> milliseconds, and never even displayed, would need to handle the Escape
> and Space keys specially.
But it does not handle VK_SPACE specially:
> static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
> {
> switch (message)
> {
> case WM_CREATE:
> return 0;
> case WM_CLOSE:
> PostQuitMessage(0);
> return 0;
> case WM_DESTROY:
> return 0;
> case WM_KEYDOWN:
> switch(wParam)
> {
> case VK_ESCAPE:
> PostQuitMessage(0);
> return 0;
>
> case VK_SPACE:
> break;
> }
> SAL_FALLTHROUGH; //TODO ???
> default:
> return DefWindowProc(hwnd, message, wParam, lParam);
> }
> }
In the inner switch (in case WM_KEYDOWN), VK_SPACE and the (implicit)
default both fall through to the outer switch's default case, which
looks rather dubious to me (why mention VK_SPACE explicitly, then?).
The code is like that ever since
<https://cgit.freedesktop.org/libreoffice/core/commit/?id=0f6fca34909535b48bad41e73e5d3d0e86c744b9>
"add anti-aliasing init"; whose author is in CC now.
More information about the LibreOffice
mailing list