Re: What's cooking in git.git (Mar 2010, #06; Wed, 24)
From: Alex Riesen <hidden>
Date: 2016-06-15 22:48:30
On Thu, Mar 25, 2010 at 17:27, Brandon Casey [off-list ref] wrote:
On 03/25/2010 10:11 AM, Nguyen Thai Ngoc Duy wrote:quoted
2010/3/25 Junio C Hamano [off-list ref]:quoted
* ar/config-from-command-line (2010-03-19) 1 commit - Allow passing of configuration parameters in the command lineThis breaks my build on Solaris because it uses strndup, which is not available.A quick glance at ar/config-from.. also detected an unchecked calloc(). Alex, any reason xcalloc wasn't used?
Just missed it. Long time away from Git sources.
btw, me also thinks the code is a little hard to read. For example, I initially
thought your calloc was not allocating enough space for the nul terminator.
ct = calloc(1, sizeof(struct config_item) + (text - name));
memcpy(ct->name, name, text - name);
I traced the code, but it wasn't until I noticed that your data structure looks
like this:
struct config_item
{
struct config_item *next;
char *value;
char name[1];
};
that I realized that room for the nul terminator in the 'name' array was allocated
by the structure itself, since the name declaration looks like name[1] and not
name[FLEX_ARRAY].Hmm, I kinda liked how the space for the terminator was reserved and all the flex array incompatibilities were worked around.
Would the code be simpler if strbufs were used? Then you wouldn't need to duplicate the skip_space and trailing_space functionality provided in the strbuf library, and would just need a new function named strbuf_tolower.
But this indeed makes sense. Promise to take a look at it after some sleep.
Also, should config_parametes_tail be spelled config_parameters_tail?
Yep. Thanks!