Follow-up Comment #4, bug #13587 (project freeciv):

Alright, I was not sufficiently clear in my
last comments, so I will explain what I meant.

I wanted you to change unit_upkeep_text() to
take an astring parameter:

void unit_upkeep_text(const struct unit *punit, struct astring *astr);

and have the function append its text to the end
of 'astr', if it should add any text at all (i.e.
if the client's player is not the unit owner, it
would not add anything).

The point is to avoid static variables, because
they make the code non re-entrant. This means
that it would not be safe to use this code with
threads, or even to call this function twice in
the same expression (e.g. in the arguments of a
printf style function). While freeciv does not
use threads, making code re-entrant generally
results in a cleaner and more modular design,
as well as leaving the possibility of thread use
open for the future.

Also, do not include headers in other headers
(as I have told you in another ticket, sorry if
I repeat myself :)). When you have a pointer to
some undefined struct, you can just use a forward

struct astring;
void unit_upkeep_text(const struct unit *punit, struct astring *astr);

then include the real header in the c file where
the function is implemented.



Reply to this item at:


  Message sent via/by Gna!

Freeciv-dev mailing list

Reply via email to