From 095aef4eef5efd2c2ad7b73ce0ae093a9a227a17 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Thu, 2 Jun 2022 21:30:03 -0400 Subject: Don't duplicate path string --- bin/qf.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/bin/qf.c b/bin/qf.c index 3b4f5851..98c897ce 100644 --- a/bin/qf.c +++ b/bin/qf.c @@ -55,15 +55,16 @@ static void push(struct Line line) { static void parse(struct Line line) { char *text = line.text; - size_t sep = strcspn(line.text, ":"); - if (!line.text[sep]) { + size_t sep = strcspn(text, ":"); + if (!text[sep]) { line.type = Text; + if (lines.len) line.path = lines.ptr[lines.len-1].path; push(line); return; } - line.path = strndup(line.text, sep); - if (!line.path) err(EX_OSERR, "strndup"); - line.text += sep + 1; + line.path = text; + text[sep] = '\0'; + line.text = &text[sep+1]; if ( !lines.len || !lines.ptr[lines.len-1].path || @@ -77,15 +78,13 @@ static void parse(struct Line line) { } char *rest; line.nr = strtoul(line.text, &rest, 10); + line.type = Match; if (rest != line.text && rest[0] == ':') { line.type = Match; line.text = &rest[1]; } else if (rest != line.text && rest[0] == '-') { line.type = Context; line.text = &rest[1]; - } else { - line.type = Text; - line.text = text; } push(line); } -- cgit 1.4.1