On 10 April 2011 20:16, Dimitar Zhekov dimitar.zhekov@gmail.com wrote:
On Sun, 10 Apr 2011 10:22:36 +1000 Lex Trotman elextr@gmail.com wrote:
On 10 April 2011 03:48, Dimitar Zhekov dimitar.zhekov@gmail.com wrote:
What is the reason for configuration_save() and configuration_save_default_session() to use g_strconcat() instead of utils_build_path()? [...]
The problem is that utils_build_path is *waaaaay* unsafe, it re-uses a single buffer so it can't be called again before the caller has finished with the result, unless the caller copies the result.
I know, my question was is there a known conflict...
Yeah well, even if its ok today, whats the chances someone forgets and makes a change tomorrow ... like me :-)
[...]
utils_build_path is really a bomb waiting to explode in someone's face (well code anyway :-). It shouldn't be a general util, either it should be made safe or if some part of Geany uses enough paths that it really is a material overhead to allocate and deallocate buffers then it should be made a local function there, not a general util.
+1. On a second thought, +10.
In fact its such a small function that even if a couple of places need it, having a few local copies isn't going to add materially to code size.
The configuration_save* functions are called from lots of places, if any of them have used utils_build_path then configuration_save* can't, so best they don't.
Only 2 places for configuration_save() (3 with x11 session management), and 1 for configuration_save_default_session(), and all seem safe. Comparing with the load functions, perhaps the reason is that saves use configfile twice, with a lot of function calls between.
Kinda messy, the configuration_save() calls are in prefs.c and callbacks.c and configuration_save_default_session() is in project.c so they are all over the place, I think it makes it very brittle.
Cheers Lex
-- E-gards: Jimmy _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel