From: Stephen T. <st...@sb...> - 2003-02-27 21:37:29
|
On Thu, 2003-02-27 at 15:26, Michael Roitzsch wrote: > Wanted to do this anyway. Do I have time until weekend? I can start if you want me to. > Btw, I don't think kicking out the assert()s in libdvdnav is necessary.=20 > I have watched a lot of DVDs and haven't seen one triggering for ages.=20 > But I won't keep anyone from doing it anyway. Patches can be sent to=20 > dvd-devel where I will receive them. (But don't call it XINE_ASSERT in=20 > libdvdnav ;) We are kicking out the asserts() from any file by "name" only. What I mean is that we are maintaining the same functionality which if a condition is true print something out then call abort().=20 This is the code that we installing.=20 /* Code Taken from GNU C Library manual */ /* Obtain a backtrace and print it to stdout. */ static inline void print_trace (void) { void *array[10]; size_t size; char **strings; size_t i; size =3D backtrace (array, 10); strings =3D backtrace_symbols (array, size); printf ("Obtained %zd stack frames.\n", size); for (i =3D 0; i < size; i++) printf ("%s\n", strings[i]); free (strings); } /** * Provide assert like feature with better description of failure=20 * Thanks to Mark Thomas=20 */=20 #define XINE_ASSERT(exp, desc, args...) \ if (!(exp)) { \ printf("%s:%s:%d: assertion `" #exp "' failed. " desc "\n\n", \ __FILE__, __FUNCTION__, __LINE__, ##args); \ print_trace(); \ abort(); \ } I hope this gives you a better idea of what we are doing. Its more of a assert on steriods. Stephen --=20 Stephen Torri <st...@sb...> |