diff options
author | delphij <delphij@FreeBSD.org> | 2007-07-06 16:34:56 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2007-07-06 16:34:56 +0000 |
commit | 668252a162d7056cc0ac454ac5bc624b6e276f84 (patch) | |
tree | 3005001006df17d68055831eb5aa5037d5d11bb0 | |
parent | cf66e0ca40ff672a7bab3294de144dc2ee3d95e2 (diff) | |
download | FreeBSD-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)
-rw-r--r-- | usr.bin/sed/compile.c | 8 |
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++; |