From 668252a162d7056cc0ac454ac5bc624b6e276f84 Mon Sep 17 00:00:00 2001 From: delphij Date: Fri, 6 Jul 2007 16:34:56 +0000 Subject: 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) --- usr.bin/sed/compile.c | 8 ++++---- 1 file 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++; -- cgit v1.1