From ba86c65d75a14cd5eae478eeb7bd6b9bf899c705 Mon Sep 17 00:00:00 2001 From: Alex Alabuzhev Date: Mon, 22 May 2017 19:45:03 +0000 Subject: [PATCH] more gcc 7 --- far/PluginA.cpp | 45 ++++++++++++++++++++++++++++------------ far/RegExp.cpp | 2 ++ far/changelog | 4 ++++ far/cmdline.cpp | 1 + far/config.cpp | 1 + far/copy.cpp | 7 +++++++ far/cvtname.cpp | 1 + far/delete.cpp | 5 ++++- far/dialog.cpp | 13 +++++++++++- far/edit.cpp | 1 + far/editcontrol.cpp | 1 + far/editor.cpp | 5 +++-- far/encoding.cpp | 6 ++++-- far/fileedit.cpp | 4 +++- far/filefilterparams.cpp | 1 + far/filelist.cpp | 1 + far/filepanels.cpp | 1 + far/fileview.cpp | 1 + far/findfile.cpp | 1 + far/makefile_gcc_common | 1 - far/panelmix.cpp | 1 + far/plist.cpp | 1 + far/plugapi.cpp | 1 + far/shortcuts.cpp | 8 +++++-- far/sqlite.c | 3 ++- far/tinyxml.cpp | 3 ++- far/usermenu.cpp | 4 +++- far/vbuild.m4 | 2 +- far/viewer.cpp | 16 ++++++++++---- far/vmenu.cpp | 6 +++--- far/vmenu2.cpp | 5 ++++- far/wm_listener.cpp | 1 + 32 files changed, 118 insertions(+), 35 deletions(-) diff --git a/far/PluginA.cpp b/far/PluginA.cpp index f9b4d65ada..e542286c4a 100644 --- a/far/PluginA.cpp +++ b/far/PluginA.cpp @@ -3565,9 +3565,11 @@ static int WINAPI FarPanelControlA(HANDLE hPlugin, int Command, void *Param) noe return ret; } - case oldfar::FCTL_SETANOTHERSELECTION: - hPlugin=PANEL_PASSIVE; - case oldfar::FCTL_SETSELECTION: + + case oldfar::FCTL_SETANOTHERSELECTION: + hPlugin=PANEL_PASSIVE; + // fallthrough + case oldfar::FCTL_SETSELECTION: { if (!Param) return FALSE; @@ -3583,9 +3585,11 @@ static int WINAPI FarPanelControlA(HANDLE hPlugin, int Command, void *Param) noe NativeInfo.PanelControl(hPlugin, FCTL_ENDSELECTION, 0, nullptr); return TRUE; } - case oldfar::FCTL_REDRAWANOTHERPANEL: - hPlugin = PANEL_PASSIVE; - case oldfar::FCTL_REDRAWPANEL: + + case oldfar::FCTL_REDRAWANOTHERPANEL: + hPlugin = PANEL_PASSIVE; + // fallthrough + case oldfar::FCTL_REDRAWPANEL: { if (!Param) return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_REDRAWPANEL, 0, nullptr)); @@ -3594,13 +3598,17 @@ static int WINAPI FarPanelControlA(HANDLE hPlugin, int Command, void *Param) noe PanelRedrawInfo pri = {sizeof(PanelRedrawInfo), static_cast(priA->CurrentItem),static_cast(priA->TopPanelItem)}; return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_REDRAWPANEL,0,&pri)); } - case oldfar::FCTL_SETANOTHERNUMERICSORT: - hPlugin = PANEL_PASSIVE; - case oldfar::FCTL_SETNUMERICSORT: - return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_SETNUMERICSORT, (Param && *static_cast(Param))? 1 : 0, nullptr)); - case oldfar::FCTL_SETANOTHERPANELDIR: + + case oldfar::FCTL_SETANOTHERNUMERICSORT: + hPlugin = PANEL_PASSIVE; + // fallthrough + case oldfar::FCTL_SETNUMERICSORT: + return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_SETNUMERICSORT, (Param && *static_cast(Param))? 1 : 0, nullptr)); + + case oldfar::FCTL_SETANOTHERPANELDIR: hPlugin = PANEL_PASSIVE; - case oldfar::FCTL_SETPANELDIR: + // fallthrough + case oldfar::FCTL_SETPANELDIR: { if (!Param) return FALSE; @@ -3610,26 +3618,35 @@ static int WINAPI FarPanelControlA(HANDLE hPlugin, int Command, void *Param) noe int ret = static_cast(NativeInfo.PanelControl(hPlugin, FCTL_SETPANELDIRECTORY,0,&dirInfo)); return ret; } + case oldfar::FCTL_SETANOTHERSORTMODE: hPlugin = PANEL_PASSIVE; + // fallthrough case oldfar::FCTL_SETSORTMODE: if (!Param) return FALSE; return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_SETSORTMODE, *static_cast(Param), nullptr)); + case oldfar::FCTL_SETANOTHERSORTORDER: hPlugin = PANEL_PASSIVE; + // fallthrough case oldfar::FCTL_SETSORTORDER: return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_SETSORTORDER, Param && *static_cast(Param), nullptr)); + case oldfar::FCTL_SETANOTHERVIEWMODE: hPlugin = PANEL_PASSIVE; + // fallthrough case oldfar::FCTL_SETVIEWMODE: return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_SETVIEWMODE, Param? *static_cast(Param) : 0, nullptr)); + case oldfar::FCTL_UPDATEANOTHERPANEL: hPlugin = PANEL_PASSIVE; + // fallthrough case oldfar::FCTL_UPDATEPANEL: return static_cast(NativeInfo.PanelControl(hPlugin, FCTL_UPDATEPANEL, Param? 1 : 0, nullptr)); + case oldfar::FCTL_GETCMDLINE: case oldfar::FCTL_GETCMDLINESELECTEDTEXT: { @@ -5518,7 +5535,8 @@ class PluginA: public Plugin case EE_GOTFOCUS: case EE_KILLFOCUS: Info->Param = &Info->EditorID; - case EE_READ: + // fallthrough + case EE_READ: case EE_SAVE: case EE_REDRAW: ExecuteFunction(es, Info->Event, Info->Param); @@ -5571,6 +5589,7 @@ class PluginA: public Plugin case VE_GOTFOCUS: case VE_KILLFOCUS: Info->Param = &Info->ViewerID; + // fallthrough case VE_READ: ExecuteFunction(es, Info->Event, Info->Param); break; diff --git a/far/RegExp.cpp b/far/RegExp.cpp index 33f33b751c..c5a6545e1c 100644 --- a/far/RegExp.cpp +++ b/far/RegExp.cpp @@ -37,6 +37,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "RegExp.hpp" +WARNING_DISABLE_GCC("-Wimplicit-fallthrough") + #ifdef RE_DEBUG #include "console.hpp" #include "strmix.hpp" diff --git a/far/changelog b/far/changelog index d7cfd61af6..0f264de364 100644 --- a/far/changelog +++ b/far/changelog @@ -1,3 +1,7 @@ +drkns 22.05.2017 20:44:12 +0000 - build 4965 + +1. Ещё всякое на тему gcc 7. + drkns 20.05.2017 23:45:02 +0000 - build 4964 1. gcc 7. diff --git a/far/cmdline.cpp b/far/cmdline.cpp index 24f9e9d55c..9b1817a63d 100644 --- a/far/cmdline.cpp +++ b/far/cmdline.cpp @@ -481,6 +481,7 @@ bool CommandLine::ProcessKey(const Manager::Key& Key) case KEY_ALTSHIFTHOME: case KEY_ALTSHIFTNUMPAD7: case KEY_RALTSHIFTHOME: case KEY_RALTSHIFTNUMPAD7: LocalKey&=~(KEY_ALT|KEY_RALT); + // fallthrough default: // Сбрасываем выделение на некоторых клавишах diff --git a/far/config.cpp b/far/config.cpp index 578194f3e8..6a7eeea29c 100644 --- a/far/config.cpp +++ b/far/config.cpp @@ -477,6 +477,7 @@ void Options::MaskGroupsSettings() case KEY_NUMPAD0: case KEY_INS: Item = &EmptyString; + // fallthrough case KEY_ENTER: case KEY_NUMENTER: case KEY_F4: diff --git a/far/copy.cpp b/far/copy.cpp index b4ef4762d7..13409e2e44 100644 --- a/far/copy.cpp +++ b/far/copy.cpp @@ -2008,6 +2008,7 @@ COPY_CODES ShellCopy::ShellCopyOneFile( return COPY_SUCCESS; } } + // fallthrough default: return COPY_CANCEL; } /* switch */ @@ -2457,12 +2458,14 @@ COPY_CODES ShellCopy::ShellCopyOneFile( { case 1: SkipEncMode = 1; + // fallthrough case 0: Flags |= FCOPY_DECRYPTED_DESTINATION; break; case 3: SkipEncMode = 3; + // fallthrough case 2: return COPY_SKIPPED; @@ -3423,18 +3426,21 @@ bool ShellCopy::AskOverwrite(const os::FAR_FIND_DATA &SrcData, break; case 3: OvrMode = 2; + // fallthrough case 2: RetCode = COPY_SKIPPED; return false; case 5: OvrMode = 5; GenerateName(strDestName, strRenamedFilesPath); + // fallthrough case 4: RetCode = COPY_RETRY; strNewName = strDestName; break; case 7: OvrMode = 6; + // fallthrough case 6: Append = TRUE; break; @@ -3514,6 +3520,7 @@ bool ShellCopy::AskOverwrite(const os::FAR_FIND_DATA &SrcData, break; case 3: ReadOnlyOvrMode=2; + // fallthrough case 2: RetCode=COPY_SKIPPED; return false; diff --git a/far/cvtname.cpp b/far/cvtname.cpp index e122022429..6aebdca10e 100644 --- a/far/cvtname.cpp +++ b/far/cvtname.cpp @@ -297,6 +297,7 @@ size_t GetMountPointLen(const string& abs_path, const string& drive_root) if (os::GetVolumeNameForVolumeMountPoint(drive_root, vol_guid)) break; // else fall down to default: + // fallthrough default: return 0; } diff --git a/far/delete.cpp b/far/delete.cpp index e94465191b..2ad42f7579 100644 --- a/far/delete.cpp +++ b/far/delete.cpp @@ -946,10 +946,12 @@ DEL_RESULT ShellDelete::ShellRemoveFile(const string& Name, bool Wipe, int Total return DELETE_CANCEL; case 3: SkipWipeMode = 2; // fallthrough down + // fallthrough case 2: return DELETE_SKIP; case 1: SkipWipeMode = 0; + // fallthrough case 0: { bool Cancel = false; @@ -1160,7 +1162,8 @@ bool ShellDelete::RemoveToRecycleBin(const string& Name, bool dir, DEL_RESULT& r if (dir) SkipFoldersMode = 2; else - m_SkipMode = 2; // fallthrough down + m_SkipMode = 2; + // fallthrough case 1: // [Skip] ret = DELETE_SKIP; break; diff --git a/far/dialog.cpp b/far/dialog.cpp index e185bacca2..545f051f55 100644 --- a/far/dialog.cpp +++ b/far/dialog.cpp @@ -1219,9 +1219,9 @@ void Dialog::DeleteDialogObjects() case DI_COMBOBOX: case DI_MEMOEDIT: delete static_cast(i.ObjPtr); + // fallthrough case DI_LISTBOX: - if ((i.Type == DI_COMBOBOX || i.Type == DI_LISTBOX)) i.ListPtr.reset(); @@ -2139,6 +2139,7 @@ bool Dialog::ProcessMoveDialog(DWORD Key) case KEY_RCTRLHOME: case KEY_RCTRLNUMPAD7: case KEY_HOME: case KEY_NUMPAD7: rr=(Key == KEY_CTRLLEFT || Key == KEY_RCTRLLEFT || Key == KEY_CTRLNUMPAD4 || Key == KEY_RCTRLNUMPAD4)?10:m_X1; + // fallthrough case KEY_LEFT: case KEY_NUMPAD4: Hide(); @@ -2159,6 +2160,7 @@ bool Dialog::ProcessMoveDialog(DWORD Key) case KEY_RCTRLEND: case KEY_RCTRLNUMPAD1: case KEY_END: case KEY_NUMPAD1: rr=(Key == KEY_CTRLRIGHT || Key == KEY_RCTRLRIGHT || Key == KEY_CTRLNUMPAD6 || Key == KEY_RCTRLNUMPAD6)?10:std::max(0,ScrX-m_X2); + // fallthrough case KEY_RIGHT: case KEY_NUMPAD6: Hide(); @@ -2179,6 +2181,7 @@ bool Dialog::ProcessMoveDialog(DWORD Key) case KEY_CTRLUP: case KEY_CTRLNUMPAD8: case KEY_RCTRLUP: case KEY_RCTRLNUMPAD8: rr=(Key == KEY_CTRLUP || Key == KEY_RCTRLUP || Key == KEY_CTRLNUMPAD8 || Key == KEY_RCTRLNUMPAD8)?5:m_Y1; + // fallthrough case KEY_UP: case KEY_NUMPAD8: Hide(); @@ -2199,6 +2202,7 @@ bool Dialog::ProcessMoveDialog(DWORD Key) case KEY_RCTRLPGDN: case KEY_RCTRLNUMPAD3: case KEY_PGDN: case KEY_NUMPAD3: rr=(Key == KEY_CTRLDOWN || Key == KEY_RCTRLDOWN || Key == KEY_CTRLNUMPAD2 || Key == KEY_RCTRLNUMPAD2)? 5:std::max(0,ScrY-m_Y2); + // fallthrough case KEY_DOWN: case KEY_NUMPAD2: Hide(); @@ -2370,6 +2374,7 @@ long long Dialog::VMProcess(int OpCode,void *vParam,long long iParam) Ret=Items[m_FocusPos].ListPtr->VMProcess(OpCode,vParam,iParam); break; } + // fallthrough case DI_EDIT: case DI_PSWEDIT: @@ -2627,6 +2632,7 @@ bool Dialog::ProcessKey(const Manager::Key& Key) return true; // делать больше не чего } } + // fallthrough case KEY_NUMENTER: case KEY_ENTER: { @@ -2793,6 +2799,7 @@ bool Dialog::ProcessKey(const Manager::Key& Key) } } } + // fallthrough case KEY_UP: case KEY_NUMPAD8: case KEY_DOWN: case KEY_NUMPAD2: @@ -2829,6 +2836,7 @@ bool Dialog::ProcessKey(const Manager::Key& Key) return true; } + // fallthrough // ??? // ЭТО перед default последний!!! case KEY_PGDN: case KEY_NUMPAD3: @@ -2854,6 +2862,7 @@ bool Dialog::ProcessKey(const Manager::Key& Key) } return true; } + // fallthrough default: { @@ -4475,6 +4484,7 @@ intptr_t Dialog::SendMessage(intptr_t Msg,intptr_t Param1,void* Param2) // изменим вызов RESIZE. Param1=-1; /*****************************************************************/ + // fallthrough case DM_MOVEDIALOG: { int W1,H1; @@ -5598,6 +5608,7 @@ intptr_t Dialog::SendMessage(intptr_t Msg,intptr_t Param1,void* Param2) Len = static_cast(CurItem->ObjPtr)->GetLength(); break; } + // fallthrough case DI_LISTBOX: { diff --git a/far/edit.cpp b/far/edit.cpp index 1d4d140a32..08af4b6a50 100644 --- a/far/edit.cpp +++ b/far/edit.cpp @@ -1273,6 +1273,7 @@ bool Edit::ProcessKey(const Manager::Key& Key) } case KEY_SHIFTSPACE: LocalKey = KEY_SPACE; + // fallthrough default: { // _D(SysLog(L"Key=0x%08X",LocalKey)); diff --git a/far/editcontrol.cpp b/far/editcontrol.cpp index e566e9b898..852ba1257c 100644 --- a/far/editcontrol.cpp +++ b/far/editcontrol.cpp @@ -686,6 +686,7 @@ int EditControl::AutoCompleteProc(bool Manual,bool DelBlock,Manager::Key& BackKe case KEY_MSLCLICK: MenuKey = KEY_ENTER; + // fallthrough case KEY_ENTER: case KEY_NUMENTER: { diff --git a/far/editor.cpp b/far/editor.cpp index 159ff2ad2c..94ed436ada 100644 --- a/far/editor.cpp +++ b/far/editor.cpp @@ -746,6 +746,7 @@ long long Editor::VMProcess(int OpCode, void* vParam, long long iParam) } } } + // fallthrough case MCODE_V_EDITORSELVALUE: // Editor.SelValue { *reinterpret_cast(vParam) = IsVerticalSelection()? VBlock2Text() : Block2Text(); @@ -1487,9 +1488,9 @@ bool Editor::ProcessKeyInternal(const Manager::Key& Key, bool& Refresh) case KEY_SHIFTDEL: case KEY_SHIFTNUMDEL: case KEY_SHIFTDECIMAL: - { Copy(FALSE); - } + // fallthrough + case KEY_CTRLD: case KEY_RCTRLD: { diff --git a/far/encoding.cpp b/far/encoding.cpp index 565836d2a9..61580c0e44 100644 --- a/far/encoding.cpp +++ b/far/encoding.cpp @@ -253,7 +253,8 @@ static size_t get_bytes_impl(uintptr_t const Codepage, const wchar_t* const Data return Utf8::get_bytes(Data, DataSize, Buffer, BufferSize); case CP_UNICODE: - memcpy(Buffer, Data, std::min(DataSize * sizeof(wchar_t), BufferSize)); + if (BufferSize) // paranoid gcc null checks are paranoid + memcpy(Buffer, Data, std::min(DataSize * sizeof(wchar_t), BufferSize)); return DataSize * sizeof(wchar_t); case CP_REVERSEBOM: @@ -308,7 +309,8 @@ static size_t get_chars_impl(uintptr_t const Codepage, const char* const Data, s return Utf7::get_chars(Data, DataSize, Buffer, BufferSize, nullptr); case CP_UNICODE: - memcpy(Buffer, Data, std::min(DataSize, BufferSize * sizeof(wchar_t))); + if (BufferSize) // paranoid gcc null checks are paranoid + memcpy(Buffer, Data, std::min(DataSize, BufferSize * sizeof(wchar_t))); return DataSize / sizeof(wchar_t); case CP_REVERSEBOM: diff --git a/far/fileedit.cpp b/far/fileedit.cpp index dc7e372a00..b2c7875db9 100644 --- a/far/fileedit.cpp +++ b/far/fileedit.cpp @@ -876,6 +876,7 @@ bool FileEditor::ReProcessKey(const Manager::Key& Key, bool CalledFromControl) FirstSave=0; break; } + // fallthrough default: return false; @@ -1196,10 +1197,11 @@ bool FileEditor::ReProcessKey(const Manager::Key& Key, bool CalledFromControl) if (!ProcessKey(Manager::Key(KEY_F2))) // учтем факт того, что могли отказаться от сохранения return false; - + // fallthrough case KEY_F4: if (F4KeyOnly) return true; + // fallthrough case KEY_ESC: case KEY_F10: { diff --git a/far/filefilterparams.cpp b/far/filefilterparams.cpp index 2b70f3ac1c..dcbc186e04 100644 --- a/far/filefilterparams.cpp +++ b/far/filefilterparams.cpp @@ -752,6 +752,7 @@ intptr_t FileFilterConfigDlgProc(Dialog* Dlg,intptr_t Msg,intptr_t Param1,void* break; } } + // fallthrough case DN_CONTROLINPUT: if ((Msg==DN_BTNCLICK && Param1 >= ID_HER_NORMALFILE && Param1 <= ID_HER_SELECTEDCURSORMARKING) diff --git a/far/filelist.cpp b/far/filelist.cpp index c9771cb6f6..c1b7e1f06b 100644 --- a/far/filelist.cpp +++ b/far/filelist.cpp @@ -1334,6 +1334,7 @@ bool FileList::ProcessKey(const Manager::Key& Key) if (!IsEmptyCmdline) return false; + // fallthrough case KEY_CTRLSHIFTINS: case KEY_CTRLSHIFTNUMPAD0: // копировать имена case KEY_RCTRLSHIFTINS: case KEY_RCTRLSHIFTNUMPAD0: diff --git a/far/filepanels.cpp b/far/filepanels.cpp index 9f3e7b192d..8fcac4a063 100644 --- a/far/filepanels.cpp +++ b/far/filepanels.cpp @@ -493,6 +493,7 @@ bool FilePanels::ProcessKey(const Manager::Key& Key) case KEY_CTRLT: case KEY_RCTRLT: if (Global->Opt->Tree.TurnOffCompletely) break; + // fallthrough case KEY_CTRLL: case KEY_RCTRLL: case KEY_CTRLQ: case KEY_RCTRLQ: { diff --git a/far/fileview.cpp b/far/fileview.cpp index 65bd88ec2d..6bb4bcc37c 100644 --- a/far/fileview.cpp +++ b/far/fileview.cpp @@ -340,6 +340,7 @@ bool FileViewer::ProcessKey(const Manager::Key& Key) if (F3KeyOnly) return true; + // fallthrough case KEY_ESC: case KEY_F10: diff --git a/far/findfile.cpp b/far/findfile.cpp index 77db2f91c8..a6fdc274e7 100644 --- a/far/findfile.cpp +++ b/far/findfile.cpp @@ -862,6 +862,7 @@ intptr_t FindFiles::MainDlgProc(Dialog* Dlg, intptr_t Msg, intptr_t Param1, void return TRUE; } } + // fallthrough case DN_HOTKEY: if (Param1==FAD_TEXT_TEXTHEX) { diff --git a/far/makefile_gcc_common b/far/makefile_gcc_common index eb02b96737..c270dbdeeb 100644 --- a/far/makefile_gcc_common +++ b/far/makefile_gcc_common @@ -75,7 +75,6 @@ CFLAGS += \ -Wno-char-subscripts \ -Wno-unused-parameter \ -Wno-missing-field-initializers \ --Wno-implicit-fallthrough \ CCFLAGS = $(CFLAGS) -std=c++1z \ -Wnon-virtual-dtor \ diff --git a/far/panelmix.cpp b/far/panelmix.cpp index eda80e049b..bea24cc335 100644 --- a/far/panelmix.cpp +++ b/far/panelmix.cpp @@ -181,6 +181,7 @@ bool MakePath1(DWORD Key, string &strPathName, const wchar_t *Param2, bool Short case KEY_ALTSHIFTBACKBRACKET: // Вставить сетевое (UNC) путь из пассивной панели case KEY_RALTSHIFTBACKBRACKET: NeedRealName = true; + // fallthrough case KEY_CTRLBRACKET: // Вставить путь из левой панели case KEY_RCTRLBRACKET: case KEY_CTRLBACKBRACKET: // Вставить путь из правой панели diff --git a/far/plist.cpp b/far/plist.cpp index ff5acd1ab4..4023e4e69a 100644 --- a/far/plist.cpp +++ b/far/plist.cpp @@ -176,6 +176,7 @@ void ShowProcessList() } } } + // fallthrough case KEY_CTRLR: case KEY_RCTRLR: { diff --git a/far/plugapi.cpp b/far/plugapi.cpp index 2cf19577de..862fbcbde7 100644 --- a/far/plugapi.cpp +++ b/far/plugapi.cpp @@ -2345,6 +2345,7 @@ size_t WINAPI apiPasteFromClipboard(enum FARCLIPBOARD_TYPE Type, wchar_t *Data, break; } } + // fallthrough case FCT_ANY: size = apiPasteFromClipboardEx(false, Data, Length); diff --git a/far/shortcuts.cpp b/far/shortcuts.cpp index 6095877e84..c9af294b5e 100644 --- a/far/shortcuts.cpp +++ b/far/shortcuts.cpp @@ -339,7 +339,9 @@ bool Shortcuts::Get(size_t Pos, string* Folder, GUID* PluginGuid, string* Plugin { case KEY_NUMPAD0: case KEY_INS: - if (!Accept()) break; + if (!Accept()) + break; + // fallthrough case KEY_NUMDEL: case KEY_DEL: { @@ -581,7 +583,9 @@ void Shortcuts::Configure() case KEY_INS: case KEY_SHIFTINS: case KEY_SHIFTNUMPAD0: - if (!Accept()) break; + if (!Accept()) + break; + // fallthrough case KEY_NUMDEL: case KEY_DEL: { diff --git a/far/sqlite.c b/far/sqlite.c index 208e715ce9..0a73db18c1 100644 --- a/far/sqlite.c +++ b/far/sqlite.c @@ -39,8 +39,9 @@ WARNING_DISABLE_MSC(4701) // https://msdn.microsoft.com/en-us/library/1wea5zwe.a WARNING_DISABLE_MSC(4703) // https://msdn.microsoft.com/en-us/library/jj851030.aspx Potentially uninitialized local pointer variable 'name' used WARNING_DISABLE_GCC("-Warray-bounds") -WARNING_DISABLE_GCC("-Wunused-but-set-variable") WARNING_DISABLE_GCC("-Wcast-qual") +WARNING_DISABLE_GCC("-Wimplicit-fallthrough") +WARNING_DISABLE_GCC("-Wunused-but-set-variable") #ifdef _MSC_VER #include diff --git a/far/tinyxml.cpp b/far/tinyxml.cpp index 53f96bf8f8..92e4a18e88 100644 --- a/far/tinyxml.cpp +++ b/far/tinyxml.cpp @@ -44,8 +44,9 @@ WARNING_PUSH() WARNING_DISABLE_MSC(4296) // https://msdn.microsoft.com/en-us/library/wz2y40yt.aspx 'operator' : expression is always true -WARNING_DISABLE_GCC("-Wzero-as-null-pointer-constant") +WARNING_DISABLE_GCC("-Wimplicit-fallthrough") WARNING_DISABLE_GCC("-Wsuggest-override") +WARNING_DISABLE_GCC("-Wzero-as-null-pointer-constant") #ifdef MEMCHECK #pragma push_macro("new") diff --git a/far/usermenu.cpp b/far/usermenu.cpp index 9ba5ea3d7a..14eb5acd5b 100644 --- a/far/usermenu.cpp +++ b/far/usermenu.cpp @@ -681,6 +681,7 @@ int UserMenu::ProcessSingleMenu(std::list& Menu, int MenuPos, std: return 1; // Закрыть меню } } + // fallthrough /* $ 28.06.2000 tran выход из пользовательского меню по ShiftF10 из любого уровня @@ -698,13 +699,13 @@ int UserMenu::ProcessSingleMenu(std::list& Menu, int MenuPos, std: return 1; case KEY_BS: // Показать меню из родительского каталога только в MM_LOCAL режиме - if (m_MenuMode == menu_mode::local) { ReturnCode=EC_PARENT_MENU; UserMenu->Close(-1); return 1; } + // fallthrough default: KeyProcessed = 0; @@ -966,6 +967,7 @@ bool UserMenu::EditMenu(std::list& Menu, std::list:: case -1: case -2: Continue = false; + // fallthrough case Message::second_button: SubMenu = true; } diff --git a/far/vbuild.m4 b/far/vbuild.m4 index 398cf4124a..1516931c83 100644 --- a/far/vbuild.m4 +++ b/far/vbuild.m4 @@ -1 +1 @@ -m4_define(BUILD,4964)m4_dnl +m4_define(BUILD,4965)m4_dnl diff --git a/far/viewer.cpp b/far/viewer.cpp index 4345d2b4dd..f516d18789 100644 --- a/far/viewer.cpp +++ b/far/viewer.cpp @@ -2005,12 +2005,14 @@ bool Viewer::process_key(const Manager::Key& Key) return true; } + case KEY_CTRLHOME: case KEY_CTRLNUMPAD7: case KEY_RCTRLHOME: case KEY_RCTRLNUMPAD7: case KEY_HOME: case KEY_NUMPAD7: case KEY_SHIFTNUMPAD7: // Перейти на начало файла if (ViewFile) LeftPos=0; + // fallthrough case KEY_CTRLPGUP: case KEY_CTRLNUMPAD9: case KEY_RCTRLPGUP: case KEY_RCTRLNUMPAD9: @@ -2019,18 +2021,18 @@ bool Viewer::process_key(const Manager::Key& Key) FilePos=0; Show(); } - return true; + case KEY_CTRLEND: case KEY_CTRLNUMPAD1: case KEY_RCTRLEND: case KEY_RCTRLNUMPAD1: case KEY_END: case KEY_NUMPAD1: case KEY_SHIFTNUMPAD1: // Перейти на конец файла if (ViewFile) LeftPos=0; + // fallthrough case KEY_CTRLPGDN: case KEY_CTRLNUMPAD3: case KEY_RCTRLPGDN: case KEY_RCTRLNUMPAD3: - if (ViewFile) { int max_counter = m_Y2 - m_Y1; @@ -3486,8 +3488,10 @@ void Viewer::Search(int Next,int FirstChar) StartSearchPos = LastSelectPos; break; - } // else pass to case 0 (below) - default: //case 0: + } + // fallthrough + case 0: + default: assert(Next >= -1 && Next <= +1); if (!Next || LastSelectSize < 0) LastSelectSize = SelectSize = -1; @@ -4357,6 +4361,8 @@ int Viewer::ViewerControl(int Command, intptr_t Param1, void *Param2) Global->ScrBuf->Flush(); return TRUE; } + // fallthrough + // Param2=0 case VCTL_QUIT: { @@ -4380,6 +4386,8 @@ int Viewer::ViewerControl(int Command, intptr_t Param1, void *Param2) return TRUE; } } + // fallthrough + /* Функция установки режимов Param2 = ViewerSetMode */ diff --git a/far/vmenu.cpp b/far/vmenu.cpp index 53ce652a58..ebee4e133d 100644 --- a/far/vmenu.cpp +++ b/far/vmenu.cpp @@ -1367,14 +1367,13 @@ bool VMenu::ProcessKey(const Manager::Key& Key) case KEY_RCTRLRALTL: case KEY_CTRLRALTL: case KEY_RCTRLALTL: - { if (bFilterEnabled) { bFilterLocked=!bFilterLocked; DisplayObject(); - break; } - } + break; + case KEY_OP_XLAT: { if (bFilterEnabled && !bFilterLocked) @@ -1409,6 +1408,7 @@ bool VMenu::ProcessKey(const Manager::Key& Key) ProcessEnter(); break; } + // fallthrough default: { if (ProcessFilterKey(LocalKey)) diff --git a/far/vmenu2.cpp b/far/vmenu2.cpp index bd787a1631..d8683c37fa 100644 --- a/far/vmenu2.cpp +++ b/far/vmenu2.cpp @@ -127,7 +127,10 @@ intptr_t VMenu2::VMenu2DlgProc(Dialog* Dlg, intptr_t Msg, intptr_t Param1, void* break; case DN_INPUT: - if (static_cast(Param2)->EventType==KEY_EVENT) break; + if (static_cast(Param2)->EventType==KEY_EVENT) + break; + // fallthrough + case DN_CONTROLINPUT: if(!cancel) { diff --git a/far/wm_listener.cpp b/far/wm_listener.cpp index a4417fe889..c1ac18c3d4 100644 --- a/far/wm_listener.cpp +++ b/far/wm_listener.cpp @@ -61,6 +61,7 @@ static LRESULT CALLBACK WndProc(HWND Hwnd, UINT Msg, WPARAM wParam, LPARAM lPara { case DBT_DEVICEARRIVAL: Arrival=true; + // fallthrough case DBT_DEVICEREMOVECOMPLETE: { const auto BroadcastHeader = reinterpret_cast(lParam);