James Coglan <jcoglan@xxxxxxxxx> writes: >> Is there a reason why you need a pointer to a strbuf that is >> allocated separately? E.g. would it make it harder to manage >> if the above were >> >> struct graphbuf { >> struct strbuf buf; >> int width; /* display width in columns */ >> }; >> >> which is essentially what Dscho suggested? > > I used a pointer here because I create the wrapper struct in > `graph_next_line()`, which is an external interface that takes a > `struct strbuf *`: > > int graph_next_line(struct git_graph *graph, struct strbuf *sb) > { > struct graph_line line = { .buf = sb, .width = 0 }; > // ... > } > > So I'm not allocating the strbuf here, just wrapping a pointer to > it. OK, so existing callers allocate strbuf, and you are merely adding a wrapper structure to keep track of the width. The management of the lifetime of the strbuf is not your business so there is no reason to inline the structure in graph_line. Makes sense. Thanks.