From: Bastien N. <ha...@ha...> - 2003-02-27 15:26:58
|
On Thu, 2003-02-27 at 15:20, Stephen Torri wrote: > On Thu, 2003-02-27 at 05:09, Bastien Nocera wrote: > > > assert are good to 1) spot programming errors 2) spot memory > > corruptions. I don't think it's a good idea to convert the assert()'s to > > just plain printf. If the assert are used to bail out when corrupted > > data is fed to the engine, these parts that use it should be fixed not > > to use it. > > > > I wouldn't think that the assert()'s as used in xine-lib should be > > replaced by printf()'s, it makes debugging harder. > > We are using the following in place of 'assert()': > > /** > * Provide assert like feature with better description of failure > * Thanks to Mark Thomas > */ > #define XINE_ASSERT(exp, desc, args...) \ > if (!(exp)) { \ > printf("%s:%s:%d: assertion `" #exp "' failed. " desc "\n", \ > __FILE__, __FUNCTION__, __LINE__, ##args); \ > abort(); \ > } > > You get the same functionality as assert() because all assert() does is > print out a terse violation message only containing the condition. > Afterwards assert() calls abort(). So to allow for more descriptive > message we use printf() and abort() together. Fair enough, suits me (I guess I didn't read the macro properly). Cheers -- /Bastien Nocera http://hadess.net #2 0x4205a2cc in printf ("Oh my %s\n", preferred_deity) from /lib/i686/libc.so.6 printf ("Oh my %s\n", preferred_deity); Segmentation fault |