Re: replace strtok() - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: replace strtok()
Date
Msg-id 5da63fb1-f388-4ce0-948d-2041054d6e40@eisentraut.org
Whole thread Raw
In response to Re: replace strtok()  (Ranier Vilela <ranier.vf@gmail.com>)
Responses Re: replace strtok()
List pgsql-hackers
On 15.10.24 14:07, Ranier Vilela wrote:
>     I also wonder, if other places touched by 5d2e1cc11 need corrections
>     too.
>     I played with
>     PG_COLOR=always PG_COLORS="error=01;31" .../initdb
> 
>     and it looks like this free() call in pg_logging_init():
>                  char       *colors = strdup(pg_colors_env);
> 
>                  if (colors)
>                  {
>     ...
>                      while ((token = strsep(&colors, ":")))
>                      {
>     ...
>                      }
> 
>                      free(colors);
>                  }
>     gets null in colors.
> 
> Yeah, I also saw this usage, but I was waiting for a definition for the 
> first report.
> The solution IMO, would be the same.
> 
> diff --git a/src/common/logging.c b/src/common/logging.c
> index aedd1ae2d8..45b5316d48 100644
> --- a/src/common/logging.c
> +++ b/src/common/logging.c
> @@ -121,7 +121,7 @@ pg_logging_init(const char *argv0)
>    {
>    char   *token;
> 
> - while ((token = strsep(&colors, ":")))
> + while ((token = strsep(&colors, ":")) != NULL && colors != NULL)
>    {
>    char   *e = strchr(token, '=');
> The advantage of this change is that it would avoid processing 
> unnecessary tokens.

This wouldn't fix anything, I think.  If colors is NULL, then strsep() 
already returns NULL, so the added code does nothing.




pgsql-hackers by date:

Previous
From: Anthonin Bonnefoy
Date:
Subject: Re: Set query_id for query contained in utility statement
Next
From: Peter Eisentraut
Date:
Subject: Re: Enable data checksums by default