summaryrefslogtreecommitdiff
path: root/sys/src/libregexp
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-05-01 03:03:12 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2016-05-01 03:03:12 +0200
commite880549da638e3fa20465e7ed90d3803aa28fc18 (patch)
tree9e052441a18438967f9cae9633f956636c8f7369 /sys/src/libregexp
parent77d23bae0f7d64ea958c8df410cf029392c6c48c (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.c5
-rw-r--r--sys/src/libregexp/rregexec.c5
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;