diff --git a/ChangeLog b/ChangeLog index f26ef9765..86a51f529 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +=========== +Bug fixes: +- #6831 Incorporating Sonar's major + +Enhancements: + v1.12.x-snapshot =========== Bug fixes: diff --git a/src/lib/arch/unix/ArchFileUnix.cpp b/src/lib/arch/unix/ArchFileUnix.cpp index 4558720c3..bbf841640 100644 --- a/src/lib/arch/unix/ArchFileUnix.cpp +++ b/src/lib/arch/unix/ArchFileUnix.cpp @@ -61,7 +61,7 @@ ArchFileUnix::getUserDirectory() std::string dir; #if HAVE_GETPWUID_R struct passwd pwent; - struct passwd* pwentp; + struct passwd* pwentp {}; #if defined(_SC_GETPW_R_SIZE_MAX) long size = sysconf(_SC_GETPW_R_SIZE_MAX); if (size == -1) { diff --git a/src/lib/platform/XWindowsScreen.cpp b/src/lib/platform/XWindowsScreen.cpp index 84035d4f6..7bd0ba8c7 100644 --- a/src/lib/platform/XWindowsScreen.cpp +++ b/src/lib/platform/XWindowsScreen.cpp @@ -848,12 +848,7 @@ void XWindowsScreen::fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const { // FIXME -- ignore xinerama for now - if (false && m_xinerama && m_xtestIsXineramaUnaware) { -// XWarpPointer(m_display, None, m_root, 0, 0, 0, 0, x, y); - } - else { - XTestFakeRelativeMotionEvent(m_display, dx, dy, CurrentTime); - } + XTestFakeRelativeMotionEvent(m_display, dx, dy, CurrentTime); XFlush(m_display); } diff --git a/src/lib/synergy/ArgParser.cpp b/src/lib/synergy/ArgParser.cpp index 388140167..d14277c23 100644 --- a/src/lib/synergy/ArgParser.cpp +++ b/src/lib/synergy/ArgParser.cpp @@ -174,28 +174,24 @@ ArgParser::parsePlatformArg(lib::synergy::ArgsBase& argsBase, const int& argc, c bool ArgParser::parseToolArgs(ToolArgs& args, int argc, const char* const* argv) { - for (int i = 1; i < argc; ++i) { - if (isArg(i, argc, argv, NULL, "--get-active-desktop", 0)) { - args.m_printActiveDesktopName = true; - return true; - } - else if (isArg(i, argc, argv, NULL, "--get-installed-dir", 0)) { - args.m_getInstalledDir = true; - return true; - } - else if (isArg(i, argc, argv, NULL, "--get-profile-dir", 0)) { - args.m_getProfileDir = true; - return true; - } - else if (isArg(i, argc, argv, NULL, "--get-arch", 0)) { - args.m_getArch = true; - return true; - } - else { - return false; - } + // We support exactly one argument at a fix position + static const int only_index {1}; + if (isArg(only_index, argc, argv, NULL, "--get-active-desktop", 0)) { + args.m_printActiveDesktopName = true; + return true; + } + else if (isArg(only_index, argc, argv, NULL, "--get-installed-dir", 0)) { + args.m_getInstalledDir = true; + return true; + } + else if (isArg(only_index, argc, argv, NULL, "--get-profile-dir", 0)) { + args.m_getProfileDir = true; + return true; + } + else if (isArg(only_index, argc, argv, NULL, "--get-arch", 0)) { + args.m_getArch = true; + return true; } - return false; } diff --git a/src/test/unittests/synergy/ArgParserTests.cpp b/src/test/unittests/synergy/ArgParserTests.cpp index 8b1211427..d7176b360 100644 --- a/src/test/unittests/synergy/ArgParserTests.cpp +++ b/src/test/unittests/synergy/ArgParserTests.cpp @@ -15,8 +15,12 @@ * along with this program. If not, see . */ +#include +#include + #include "synergy/ArgParser.h" #include "synergy/ArgsBase.h" +#include "synergy/ToolArgs.h" #include "test/global/gtest.h" @@ -205,3 +209,24 @@ TEST(ArgParserTests, assembleCommand_stringArrayWithSpace_returnCommand) EXPECT_EQ("\"stub1 space\" stub2 \"stub3 space\"", command); } +TEST(ArgParserTests, parseToolArgs_matches_correspondingly) +{ + ArgParser parser(nullptr); + std::map> tests = { + {"--get-active-desktop", [](ToolArgs const &a){ return a.m_printActiveDesktopName; }}, + {"--get-installed-dir", [](ToolArgs const &a){ return a.m_getInstalledDir; }}, + {"--get-profile-dir", [](ToolArgs const &a){ return a.m_getProfileDir; }}, + {"--get-arch", [](ToolArgs const &a){ return a.m_getArch; }} + }; + for (auto const &test: tests) { + ToolArgs toolArgs; + EXPECT_FALSE(test.second(toolArgs)); + std::array twoArgs {"syntool", test.first}; + EXPECT_TRUE(parser.parseToolArgs(toolArgs, 2, twoArgs.data())); + EXPECT_TRUE(test.second(toolArgs)); + } + ToolArgs toolArgs; + std::array twoArgs {"syntool", "--garbage"}; + EXPECT_FALSE(parser.parseToolArgs(toolArgs, 2, twoArgs.data())); +} +