[uClibc-cvs] uClibc/libc/misc/assert __assert.c,1.7,1.8
Manuel Novoa III
mjn3 at uclibc.org
Sat Jan 17 14:39:42 UTC 2004
Update of /var/cvs/uClibc/libc/misc/assert
In directory nail:/tmp/cvs-serv3359
Modified Files:
__assert.c
Log Message:
Prevent runaway asserts, which can happen if there's a problem with
stdio or locales.
Index: __assert.c
===================================================================
RCS file: /var/cvs/uClibc/libc/misc/assert/__assert.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- __assert.c 1 Aug 2003 20:08:45 -0000 1.7
+++ __assert.c 17 Jan 2004 14:39:40 -0000 1.8
@@ -46,21 +46,27 @@
#if 1
+static int in_assert; /* bss inits to 0. */
+
void __assert(const char *assertion, const char * filename,
int linenumber, register const char * function)
{
- fprintf(stderr,
+ if (!in_assert) {
+ in_assert = 1;
+
+ fprintf(stderr,
#ifdef ASSERT_SHOW_PROGNAME
- "%s: %s: %d: %s: Assertion `%s' failed.\n", __progname,
+ "%s: %s: %d: %s: Assertion `%s' failed.\n", __progname,
#else
- "%s: %d: %s: Assertion `%s' failed.\n",
+ "%s: %d: %s: Assertion `%s' failed.\n",
#endif
- filename,
- linenumber,
- /* Function name isn't available with some compilers. */
- ((function == NULL) ? "?function?" : function),
- assertion
- );
+ filename,
+ linenumber,
+ /* Function name isn't available with some compilers. */
+ ((function == NULL) ? "?function?" : function),
+ assertion
+ );
+ }
abort();
}
More information about the uClibc-cvs
mailing list