summaryrefslogtreecommitdiffstats
path: root/usr.bin/sed/compile.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2007-07-06 16:34:56 +0000
committerdelphij <delphij@FreeBSD.org>2007-07-06 16:34:56 +0000
commit668252a162d7056cc0ac454ac5bc624b6e276f84 (patch)
tree3005001006df17d68055831eb5aa5037d5d11bb0 /usr.bin/sed/compile.c
parentcf66e0ca40ff672a7bab3294de144dc2ee3d95e2 (diff)
downloadFreeBSD-src-668252a162d7056cc0ac454ac5bc624b6e276f84.zip
FreeBSD-src-668252a162d7056cc0ac454ac5bc624b6e276f84.tar.gz
Before doing compile_re() which needs a parameter to identify
whether we should ignore case, determine the flag by calling compile_flags() first. Also, make sure that we obtain an initialized cmd->u.s buffer before processing further. We may want to refine this solution later, but for now, make the changes in order to unbreak world build after a sed(1) with rev. 1.29 of compile.c is installed. Approved by: re (hrs)
Diffstat (limited to 'usr.bin/sed/compile.c')
-rw-r--r--usr.bin/sed/compile.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/usr.bin/sed/compile.c b/usr.bin/sed/compile.c
index a354e4e..635e058 100644
--- a/usr.bin/sed/compile.c
+++ b/usr.bin/sed/compile.c
@@ -318,19 +318,19 @@ nonsel: /* Now parse the command */
errx(1,
"%lu: %s: substitute pattern can not be delimited by newline or backslash",
linenum, fname);
- if ((cmd->u.s = malloc(sizeof(struct s_subst))) == NULL)
+ if ((cmd->u.s = calloc(1, sizeof(struct s_subst))) == NULL)
err(1, "malloc");
p = compile_delimited(p, re);
if (p == NULL)
errx(1,
"%lu: %s: unterminated substitute pattern", linenum, fname);
+ --p;
+ p = compile_subst(p, cmd->u.s);
+ p = compile_flags(p, cmd->u.s);
if (*re == '\0')
cmd->u.s->re = NULL;
else
cmd->u.s->re = compile_re(re, cmd->u.s->icase);
- --p;
- p = compile_subst(p, cmd->u.s);
- p = compile_flags(p, cmd->u.s);
EATSPACE();
if (*p == ';') {
p++;
OpenPOWER on IntegriCloud