On Wed, Nov 10, 2010 at 16:49 +0100, Julia Lawall wrote: > On Wed, 10 Nov 2010, Vasiliy Kulikov wrote: > > > On Wed, Nov 10, 2010 at 16:28 +0100, Julia Lawall wrote: > > > It also occurred to me that in eg sizeof(*x), where x has type int *, the > > > reference to *x is not really a reference to an integer value, and the > > > reference to x is not really a reference to an integer pointer value. > > > Thus there is no longer any type inference for the argument to sizeof. > > > If > > > this seems like a bad decision, please let me know and I will change it > > > back. > > > > Why?.. I don't see any troubles with it. The only uniqueness of > > sizeof() is that it doesn't really calculates its argument, e.g. > > after "int a = 1; sizeof(a++);" a is still 1, but AFAIU this should not > > influence on coccinelle. > > I'm not clear on what you are suggesting.
Nothing ;) I just didn't understand why you've chosen it. > Suppose you have the following > semantic patch: > > @@ > int x; > @@ > > - x > + ANINT(x) > > and the code: > > int x; > foo(sizeof(x)); > > Do you want to obtain: > > int x; > foo(sizeof(ANINT(x))); > > or: > > int x; > foo(sizeof(x)); Maybe the script writer should more preciselly declare x's properties? Change all occurrences of int doesn't make much sense to me... > > But it is impossible to differ wrong type passing to memset: > > > > struct X *ll; > > memset(ll, 0, sizeof(*ll)); > > > > vs. > > > > struct X *ll; /* l + l */ > > struct Y *l1; /* l + 1 (number one) */ > > memset(ll, 0, sizeof(*l1)); > > OK, I guess. But perhaps the above code would be wrong even if both ll > and l1 had type struct X *? OK, assume that ll is initialized :) -- Vasiliy _______________________________________________ Cocci mailing list [email protected] http://lists.diku.dk/mailman/listinfo/cocci (Web access from inside DIKUs LAN only)
