Thread (7 messages) 7 messages, 6 authors, 2019-09-26

Re: sizeof(var) vs sizeof(type), was Re: [PATCH] git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()

From: Derrick Stolee <hidden>
Date: 2019-09-26 13:36:50

On 9/26/2019 9:22 AM, Johannes Schindelin wrote:
Hi Peff,

On Mon, 23 Sep 2019, Jeff King wrote:
quoted
On Thu, Sep 19, 2019 at 10:48:30PM +0200, René Scharfe wrote:
quoted
Use the macro COPY_ARRAY to copy array elements and MOVE_ARRAY to do the
same for moving them backwards in an array with potential overlap.  The
result is shorter and safer, as it infers the element type automatically
and does a (very) basic type compatibility check for its first two
arguments.

These cases were missed by Coccinelle and contrib/coccinelle/array.cocci
because the type of the elements is "const char *", not "char *", and
the rules in the semantic patch cautiously insist on the sizeof operator
being used on exactly the same type to avoid generating transformations
that introduce subtle bugs into tricky code.
Another good reason to use "sizeof(var)" instead of sizeof(type)". :)
That is indeed a very good reason, in addition to getting the type right
automatically (by virtue of letting the compiler pick it).

Should we make this an explicit guideline in our documentation?
Better yet: can we create a Coccinelle script to fix it automatically?

-Stolee
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help