Hi Josh and Derek, Thanks for your helpful suggestions! I've just committed a revision incorporating them, as well as a number of new comments.
On 6/25/07, Derek Atkins <[EMAIL PROTECTED]> wrote: > >> -static void encoding_selected(GOCharmapSel* selector, const char* enc, > >> +/* Event handler for a new encoding being selected. */ > >> +static void encoding_selected(GOCharmapSel* selector, const char* > >> encoding, > >> GncCsvPreview* preview) > >> { > >> + /* This gets called twice everytime a new encoding is selected. The > >> + * second call actually passes the correct data; thus, we only do > >> + * something the second time this is called. */ > >> static gboolean second_call = FALSE; > >> + /* If this is the second time the function is called ... */ > >> if(second_call) > > > > Ick. This stateful behavior should be avoided if at all possible. Is there > > a way to instead be conditional on the "correctness" of the data? Or > > eliminate the double-call? > > Or put the state into the parse context and not in the function? Yes, > "static" state is BAD. What happens if you call the importer multiple > times? (e.g. you're importing multiple files) The second time you run > the importer this variable will be set and you're screwed. Yes, this behavior is indeed ugly. I have tried to find a way to get the double call to disappear, since it's the ideal solution, but had no success. The function is an event handler for the "charmap_changed" event in the GOCharmapSel object; I don't know why it calls the handler twice. I think it might be a bug in GOffice, but I'm not sure. ... In any case, I have changed to using a boolean flag in the GncCsvPreview struct, as Derek suggested. Benny _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel