[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