On Feb 9, 2010, at 5:54 AM, Derek Atkins wrote: > John, > > I think you missed my main point, which is that your new code *wont > work* because it never assigns the correct variable. More details > inline... > > John Ralls <[email protected]> writes: > > [snip] >>>> - gnc_numeric *key; >>>> + gnc_numeric *key = NULL; >>>> + gpointer pkey = (gpointer)key; > > Okay, so key is now NULL, which is fine. But then the second line > just assigns pkey to the VALUE of key, which means pkey == NULL.
Got it. That's my GCE. [...] > >> The problem in both cases was that gcc-4.1.3 puked on casting the address of >> key to a gpointer*: >> cc1: warnings being treated as errors >> window-autoclear.c: In function ‘gnc_autoclear_window_ok_cb’: >> window-autoclear.c:171: warning: dereferencing type-punned pointer will >> break strict-aliasing rules >> (And, of course, the same for split.) > > Fair enough. I wonder if we actually NEED the explicit cast? > If we do then we need to come up with another way of doing it, > maybe by re-assigning after the fill-in call. Yes, otherwise gcc will whine about passing an incompatible pointer. Googling 'gpointer strict-aliasing' produced http://www.hulver.com/scoop/story/2004/4/25/13713/0715, which recommends reassigning, just as you say. I'll add that (along with a stern comment) shortly. Regards, John Ralls _______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
