From: ori@eigenstate.org
To: 9front@9front.org
Subject: Re: [9front] [PATCH] git/fs: remove trailing null bytes from parent file
Date: Thu, 06 Jan 2022 11:07:59 -0500 [thread overview]
Message-ID: <6AD9068E4867656B61A79ABDAC44A3CC@eigenstate.org> (raw)
In-Reply-To: <20220106085844.1385-1-mforney@mforney.org>
Quoth Michael Forney <mforney@mforney.org>:
>
> Previously, due to the way the size of buf was calculated, the parent
> file had one trailing null byte for each parent.
> ---
> diff 370bfd26ce5ffd9a06a314a20d1691cc6b15b712 2a5737d2ef4ea7920f6d4e5f47487837568b751c
> --- a/sys/src/cmd/git/fs.c Wed Jan 5 22:38:56 2022
> +++ b/sys/src/cmd/git/fs.c Thu Jan 6 00:52:21 2022
> @@ -380,8 +380,8 @@
> char *buf, *p;
> int i, n;
>
> - n = o->commit->nparent * (40 + 2);
> - buf = emalloc(n);
> + n = o->commit->nparent * (40 + 1);
> + buf = emalloc(n + 1);
> p = buf;
> for (i = 0; i < o->commit->nparent; i++)
> p += sprint(p, "%H\n", o->commit->parent[i]);
>
I think this needs to be:
n = o->commit->nparent * (40 + 1) + 1;
because we need 41 bytes per line *and* room
for the trailing nul.
While we're here, let's nuke the sprint, and
compute the number of bytes we wrote in.
diff 370bfd26ce5ffd9a06a314a20d1691cc6b15b712 uncommitted
--- a/sys/src/cmd/git/fs.c
+++ b/sys/src/cmd/git/fs.c
@@ -377,18 +377,18 @@
static void
readcommitparent(Req *r, Object *o)
{
- char *buf, *p;
+ char *buf, *p, *e;
int i, n;
- n = o->commit->nparent * (40 + 2);
+ n = o->commit->nparent * (40 + 1) + 1;
buf = emalloc(n);
p = buf;
+ e = buf + n;
for (i = 0; i < o->commit->nparent; i++)
- p += sprint(p, "%H\n", o->commit->parent[i]);
- readbuf(r, buf, n);
+ p = seprint(p, e, "%H\n", o->commit->parent[i]);
+ readbuf(r, buf, p - buf);
free(buf);
}
-
next prev parent reply other threads:[~2022-01-06 16:16 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-06 8:58 Michael Forney
2022-01-06 16:07 ` ori [this message]
2022-01-06 16:49 ` Michael Forney
2022-01-06 16:55 ` ori
2022-01-06 17:02 ` ori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6AD9068E4867656B61A79ABDAC44A3CC@eigenstate.org \
--to=ori@eigenstate.org \
--cc=9front@9front.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).