Hi Jérémie, On Mittwoch, 4. April 2018 11:36:18 CEST Jérémie Guichard wrote: > > Lubomir mentioned he could look into this 'issue' but did not have much > free time, since I do have some on my side I can look into this change. I > do prefer to consult the community before doing it though. Here are the > different solutions that came to my mind: > > 1) Add a output parameter to last printed struct tag_entry* in the list to > the current taglist_get_tagstring allowing callers to iterate when needed > (not my favorite) > 2) It seems strange for a UI specific function to be part of dive.h/.c I > would rather move this functionality to 'Qt level' say in qthelper.h/.c (or > other better location if one of you have a better proposal) and implement > it using QStrings (avoiding the pre-allocated buffer issue). This is > already what is done for get_gas_string for example. It is my preferred > proposal since all usage I could find of taglist_get_tagstring are in Qt > code and this function is purely UI related code...
The backend people prefer not to move too much functionality to C++. So you will probably have less convincing to do if you construct the string with "membuffer" and return a "char *" that is freed by the caller: char *s = taglist_get_tagstring(...); QString tags(s); free(s); If there are more such instances, we could think about a helper function: QString QStringFromC(char *c) { QString res(c); free(c); return res; } Berthold _______________________________________________ subsurface mailing list subsurface@subsurface-divelog.org http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface