sed: slightly better fix for prev commit's problem
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 24 Apr 2012 17:27:34 +0000 (19:27 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 24 Apr 2012 17:27:34 +0000 (19:27 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
editors/sed.c

index 429c1ed..3ee8edc 100644 (file)
@@ -741,9 +741,9 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
                 * The match_count check is so not to break
                 * echo "hi" | busybox sed 's/^/!/g'
                 */
-               if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count && *line) {
+               if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count) {
                        pipe_putc(*line++);
-                       continue;
+                       goto next;
                }
 
                match_count++;
@@ -755,7 +755,7 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
                ) {
                        for (i = 0; i < G.regmatch[0].rm_eo; i++)
                                pipe_putc(*line++);
-                       continue;
+                       goto next;
                }
 
                /* print everything before the match */
@@ -773,7 +773,7 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
                /* if we're not doing this globally, get out now */
                if (sed_cmd->which_match != 0)
                        break;
-
+ next:
                if (*line == '\0')
                        break;