This is additional patch that avoids the memmove when processing the quote on
the end of the parameter.

---
 lib/cmdline.c                                   | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/cmdline.c b/lib/cmdline.c
index c5335a79a177..b1d8a0dc60fc 100644
--- a/lib/cmdline.c
+++ b/lib/cmdline.c
@@ -191,7 +191,13 @@ bool parse_option_str(const char *str, const char *option)
        return false;
 }
 
+#define break_arg_end(i) { \
+       if (isspace(args[i]) && !in_quote && !backslash && !in_single) \
+               break; \
+       }
+
 #define squash_char { \
+       break_arg_end(i + 1); \
        memmove(args + 1, args, i); \
        args++; \
        i--; \
@@ -209,8 +215,7 @@ char *next_arg(char *args, char **param, char **val)
        char *next;
 
        for (i = 0; args[i]; i++) {
-               if (isspace(args[i]) && !in_quote && !backslash && !in_single)
-                       break;
+               break_arg_end(i);
 
                if ((equals == 0) && (args[i] == '='))
                        equals = i;
-- 
2.13.6

Reply via email to