← Commit list

f2c16edf9

Denys Vlasenko
Denys Vlasenko
2010-04-20
FAILED Duration: 28s

Subject

sed: fix nested {} case

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

editors/sed.c+9 -1
@@ -936,7 +936,15 @@ static void process_files(void)
/* Skip blocks of commands we didn't match */
if (sed_cmd->cmd == '{') {
if (sed_cmd->invert ? matched : !matched) {
- while (sed_cmd->cmd != '}') {
+ unsigned nest_cnt = 0;
+ while (1) {
+ if (sed_cmd->cmd == '{')
+ nest_cnt++;
+ if (sed_cmd->cmd == '}') {
+ nest_cnt--;
+ if (nest_cnt == 0)
+ break;
+ }
sed_cmd = sed_cmd->next;
if (!sed_cmd)
bb_error_msg_and_die("unterminated {");
testsuite/sed.tests+5 -0
@@ -253,4 +253,9 @@ testing "sed c" \
"repl\nrepl\n" "" \
"first\nsecond\n"
+testing "sed nested {}s" \
+ "sed '/asd/ { p; /s/ { s/s/c/ }; p; q }'" \
+ "qwe\nasd\nacd\nacd\n" "" \
+ "qwe\nasd\nzxc\n"
+
exit $FAILCOUNT