diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-05-01 03:03:12 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-05-01 03:03:12 +0200 |
commit | e880549da638e3fa20465e7ed90d3803aa28fc18 (patch) | |
tree | 9e052441a18438967f9cae9633f956636c8f7369 /sys/src/libregexp | |
parent | 77d23bae0f7d64ea958c8df410cf029392c6c48c (diff) |
libregex: fix sed regression (thans spew)
I introduced a regression in sed that currently has screwed up
/sys/lib/man/secindex.
The issue is that sed 's/$/ foo/g' will actually replace the newline
character with foo instead of just appending at the end of the line.
This only makes a difference when sed is operating on a multiple line
record. The effect is a record like:
foo
bar
baz
becomes:
foo foobar foo baz foo
instead of
foo foo
bar foo
baz foo
Diffstat (limited to 'sys/src/libregexp')
-rw-r--r-- | sys/src/libregexp/regexec.c | 5 | ||||
-rw-r--r-- | sys/src/libregexp/rregexec.c | 5 |
2 files changed, 2 insertions, 8 deletions
diff --git a/sys/src/libregexp/regexec.c b/sys/src/libregexp/regexec.c index 89501de6a..9fa9a1229 100644 --- a/sys/src/libregexp/regexec.c +++ b/sys/src/libregexp/regexec.c @@ -69,7 +69,6 @@ Again: if(r != curinst->r) goto Done; case OANY: /* fallthrough */ - Any: next = t->next; t->pc = curinst + 1; t->next = nil; @@ -111,12 +110,10 @@ Again: } goto Done; case OEOL: - if(r == L'\0' && ep == nil) { + if(r == L'\n' || r == L'\0' && ep == nil) { curinst++; goto Again; } - if(r == L'\n') - goto Any; goto Done; case OJMP: curinst = curinst->a; diff --git a/sys/src/libregexp/rregexec.c b/sys/src/libregexp/rregexec.c index 557580b9c..b1320de4b 100644 --- a/sys/src/libregexp/rregexec.c +++ b/sys/src/libregexp/rregexec.c @@ -68,7 +68,6 @@ Again: if(*rsp != curinst->r) goto Done; case OANY: /* fallthrough */ - Any: next = t->next; t->pc = curinst + 1; t->next = nil; @@ -110,12 +109,10 @@ Again: } goto Done; case OEOL: - if(*rsp == L'\0' && rep == nil) { + if(*rsp == '\n' || *rsp == L'\0' && rep == nil) { curinst++; goto Again; } - if(*rsp == '\n') - goto Any; goto Done; case OJMP: curinst = curinst->a; |