René Scharfe <rene.scha...@lsrfire.ath.cx> writes:

> How about making split_ident_line() a bit friendlier be letting it
> provide the epoch as default time stamp instead of NULL?  

Two knee-jerk concerns I have without going back to the callers:

 * Would that "0" ever be given to the approxidate parser, which
   rejects ancient dates in numbers-since-epoch format without @
   prefix?

 * Does any existing caller use the NULL as a sign to see the input
   was without date and act on that information?


> -- >8 --
> Subject: ident: let split_ident_line() provide a default time stamp
>
> If a commit has a broken time stamp, split_ident_line() sets
> date_begin, date_end, tz_begin and tz_end to NULL.  Not all callers
> are prepared to handle that case and segfault.
>
> Instead of fixing them and having to be careful while implementing
> the next caller, provide a string consisting of the number zero as
> default value, representing the UNIX epoch.  That's the value that
> git log showed before it was converted to use split_ident_line().
>
> Reported-by: Ivan Lyapunov <dron...@gmail.com>
> Signed-off-by: Rene Scharfe <rene.scha...@lsrfire.ath.cx>
> ---
>  ident.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/ident.c b/ident.c
> index 1c123e6..ee840f4 100644
> --- a/ident.c
> +++ b/ident.c
> @@ -191,6 +191,8 @@ static void strbuf_addstr_without_crud(struct strbuf *sb, 
> const char *src)
>       sb->buf[sb->len] = '\0';
>  }
>  
> +static const char zero_string[] = "0";
> +
>  /*
>   * Reverse of fmt_ident(); given an ident line, split the fields
>   * to allow the caller to parse it.
> @@ -254,10 +256,10 @@ int split_ident_line(struct ident_split *split, const 
> char *line, int len)
>       return 0;
>  
>  person_only:
> -     split->date_begin = NULL;
> -     split->date_end = NULL;
> -     split->tz_begin = NULL;
> -     split->tz_end = NULL;
> +     split->date_begin = zero_string;
> +     split->date_end = zero_string + strlen(zero_string);
> +     split->tz_begin = zero_string;
> +     split->tz_end = zero_string + strlen(zero_string);
>       return 0;
>  }
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to