Loading...
gen/FreeBSD/assert.c.patch Libc-763.13 Libc-594.1.4
--- Libc/Libc-763.13/gen/FreeBSD/assert.c.patch
+++ Libc/Libc-594.1.4/gen/FreeBSD/assert.c.patch
@@ -1,15 +1,13 @@
---- assert.c.orig	2010-09-24 10:27:46.000000000 -0700
-+++ assert.c	2010-09-24 10:37:33.000000000 -0700
-@@ -34,23 +34,60 @@ static char sccsid[] = "@(#)assert.c	8.1
- __FBSDID("$FreeBSD: src/lib/libc/gen/assert.c,v 1.8 2007/01/09 00:27:53 imp Exp $");
+--- assert.c.orig	2008-09-06 16:27:37.000000000 -0700
++++ assert.c	2008-09-07 01:35:02.000000000 -0700
+@@ -41,20 +41,39 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/ass
+ #include <stdio.h>
+ #include <stdlib.h>
  
- #include <assert.h>
--#include <stdio.h>
- #include <stdlib.h>
-+#include <unistd.h>
-+#include "CrashReporterClient.h"
-+#include "_simple.h"
- 
++extern const char *__crashreporter_info__;
++static const char badasprintf[] =
++    "Assertion failed and asprintf also failed to create full error string";
++
  void
 -__assert(func, file, line, failedexpr)
 +__assert_rtn(func, file, line, failedexpr)
@@ -18,50 +16,28 @@
  	const char *failedexpr;
  {
 -	if (func == NULL)
--		(void)fprintf(stderr,
-+	if (func == (const char *)-1L) {
-+		/* 8462256: special case to replace __eprintf */
-+		_simple_dprintf(STDERR_FILENO,
-+		     "%s:%u: failed assertion `%s'\n", file, line, failedexpr);
-+		if (!CRGetCrashLogMessage()) {
-+			_SIMPLE_STRING s = _simple_salloc();
-+			if (s) {
-+				_simple_sprintf(s,
-+				  "%s:%u: failed assertion `%s'\n",
-+				  file, line, failedexpr);
-+				CRSetCrashLogMessage(_simple_string(s));
-+			} else
-+				CRSetCrashLogMessage(failedexpr);
-+		}
-+	} else if (func == NULL) {
-+		_simple_dprintf(STDERR_FILENO,
++	char *str = NULL;
++
++	if (func == NULL) {
+ 		(void)fprintf(stderr,
  		     "Assertion failed: (%s), file %s, line %d.\n", failedexpr,
  		     file, line);
 -	else
--		(void)fprintf(stderr,
-+		if (!CRGetCrashLogMessage()) {
-+			_SIMPLE_STRING s = _simple_salloc();
-+			if (s) {
-+				_simple_sprintf(s,
-+				  "Assertion failed: (%s), file %s, line %d.\n",
-+				  failedexpr, file, line);
-+				CRSetCrashLogMessage(_simple_string(s));
-+			} else
-+				CRSetCrashLogMessage(failedexpr);
++		if (!__crashreporter_info__) {
++			asprintf(&str,
++			     "Assertion failed: (%s), file %s, line %d.\n",
++			     failedexpr, file, line);
++			__crashreporter_info__ = str ? str : badasprintf;
 +		}
 +	} else {
-+		_simple_dprintf(STDERR_FILENO,
+ 		(void)fprintf(stderr,
  		     "Assertion failed: (%s), function %s, file %s, line %d.\n",
  		     failedexpr, func, file, line);
-+		if (!CRGetCrashLogMessage()) {
-+			_SIMPLE_STRING s = _simple_salloc();
-+			if (s) {
-+				_simple_sprintf(s,
-+				  "Assertion failed: (%s), function %s, file %s, line %d.\n",
-+				  failedexpr, func, file, line);
-+				CRSetCrashLogMessage(_simple_string(s));
-+			} else
-+				CRSetCrashLogMessage(failedexpr);
++		if (!__crashreporter_info__) {
++			asprintf(&str,
++			     "Assertion failed: (%s), function %s, file %s, line %d.\n",
++			     failedexpr, func, file, line);
++			__crashreporter_info__ = str ? str : badasprintf;
 +		}
 +	}
  	abort();