From: SourceForge.net <no...@so...> - 2008-09-17 22:54:29
|
Bugs item #2106353, was opened at 2008-09-11 21:47 Message generated for change (Comment added) made by olly You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=2106353&group_id=1645 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: documentation Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Andrew Stone (vxir) Assigned to: David M. Beazley (beazley) Summary: section 13.3 example is dangerous Initial Comment: The example (included at the end) of passing the Python string as the first argument is very dangerous because the Python formatted string could have "%" in it that will be interpreted as a C printf replacement. For example, try the example with "name" set to "%s". You will get a seg fault. Since the SWIG docs seem to be recommending this approach, I think that a small warning about this issue would be nice. Especially since the workaround is simple -- change traceprintf to take 2 arguments (described in the section below) and pass in ("%s", "Hello %s. Your number is %d\n" % (name, num)). The example: Arguably, this approach seems to defeat the whole point of variable length arguments. However, this actually provides enough support for many simple kinds of varargs functions to still be useful. For instance, you could make function calls like this (in Python): >>> traceprintf("Hello World") >>> traceprintf("Hello %s. Your number is %d\n" % (name, num)) Notice how string formatting is being done in Python instead of C. ---------------------------------------------------------------------- Comment By: Olly Betts (olly) Date: 2008-09-18 06:54 Message: Yes, that's not a great thing to be suggesting people do. Perhaps there's a less dangerous example of how the default behaviour is useful (or perhaps it isn't actually (safely) useful and we should change it). Anyway, a patch to improve this documentation would be welcome - either a better example, or a warning about why the current example is poor. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=2106353&group_id=1645 |