From: Junio C Hamano <gitster@pobox.com>
To: tboegi@web.de
Cc: git@vger.kernel.org, takimoto-j@kba.biglobe.ne.jp
Subject: Re: [PATCH v1 2/2] strbuf_getcwd() needs precompse_strbuf_if_needed()
Date: Tue, 07 May 2024 10:22:02 -0700 [thread overview]
Message-ID: <xmqqa5l1pmf9.fsf@gitster.g> (raw)
In-Reply-To: <20240507084431.19797-1-tboegi@web.de> (tboegi@web.de's message of "Tue, 7 May 2024 10:44:31 +0200")
tboegi@web.de writes:
> +void precompse_strbuf_if_needed(struct strbuf *sb)
> +{
> + char *buf_prec = (char *)precompose_string_if_needed(sb->buf);
> + if (buf_prec != sb->buf) {
Cute. This matches with the !PRECOMPSE_UNICODE case in git-compat-util.h
where we do
static inline const char *precompose_string_if_needed(const char *in)
{
return in;
}
to make it a no-op. I was wondering how you are avoiding an
inevitable crash from trying to free an unfreeable piece of memory,
but this should do just fine.
You'd want to fix the typo in the name of the new function, I
presume? "precompse" -> "precompose"
> + size_t buf_prec_len = strlen(buf_prec);
> + free(strbuf_detach(sb, NULL));
> + strbuf_attach(sb, buf_prec, buf_prec_len, buf_prec_len + 1);
> + }
> +
> +}
> diff --git a/strbuf.c b/strbuf.c
> index 0d929e4e19..cefea6b75f 100644
> --- a/strbuf.c
> +++ b/strbuf.c
> @@ -591,6 +591,7 @@ int strbuf_getcwd(struct strbuf *sb)
> for (;; guessed_len *= 2) {
> strbuf_grow(sb, guessed_len);
> if (getcwd(sb->buf, sb->alloc)) {
> + precompse_strbuf_if_needed(sb);
> strbuf_setlen(sb, strlen(sb->buf));
The need for strbuf_setlen() stems from the use of getcwd() that may
and will place a string that is much shorter than sb->alloc, so they
logically belong together. It will make more sense to call the
precompose _after_ arranging the members of strbuf in a consistent
state with the call to strbuf_setlen().
> return 0;
> }
> --
> 2.41.0.394.ge43f4fd0bd
next prev parent reply other threads:[~2024-05-07 17:22 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20240430032717281.IXLP.121462.mail.biglobe.ne.jp@biglobe.ne.jp>
2024-05-07 8:44 ` [PATCH v1 1/2] t0050: ls-files path fails if path of workdir is NFD tboegi
2024-05-07 17:30 ` Junio C Hamano
2024-05-07 8:44 ` [PATCH v1 2/2] strbuf_getcwd() needs precompse_strbuf_if_needed() tboegi
2024-05-07 17:22 ` Junio C Hamano [this message]
2024-05-09 15:24 ` Junio C Hamano
2024-05-09 15:29 ` Torsten Bögershausen
2024-05-07 17:47 ` Junio C Hamano
2024-05-08 0:32 ` brian m. carlson
2024-05-09 16:11 ` [PATCH v2 1/1] macOS: ls-files path fails if path of workdir is NFD tboegi
2024-05-09 16:37 ` Junio C Hamano
2024-05-19 7:03 ` Jun. T
2024-05-20 16:06 ` Torsten Bögershausen
2024-05-20 18:08 ` Junio C Hamano
2024-05-20 19:21 ` Torsten Bögershausen
2024-05-21 14:14 ` [PATCH v3 " tboegi
2024-05-21 17:50 ` Junio C Hamano
2024-05-21 20:57 ` Torsten Bögershausen
2024-05-21 22:15 ` Junio C Hamano
2024-05-23 15:33 ` Jun. T
2024-05-25 20:01 ` Torsten Bögershausen
2024-05-31 19:31 ` [PATCH v4 " tboegi
2024-06-01 15:55 ` Junio C Hamano
2024-06-02 19:40 ` Torsten Bögershausen
2024-06-04 0:56 ` Jun T
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=xmqqa5l1pmf9.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=takimoto-j@kba.biglobe.ne.jp \
--cc=tboegi@web.de \
/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).