Loading...
gen/FreeBSD/assert.c.patch Libc-498 Libc-763.13
--- Libc/Libc-498/gen/FreeBSD/assert.c.patch
+++ Libc/Libc-763.13/gen/FreeBSD/assert.c.patch
@@ -1,7 +1,14 @@
---- assert.c.orig	2004-09-20 17:32:51.000000000 -0700
-+++ assert.c	2004-11-17 15:56:24.000000000 -0800
-@@ -42,7 +42,7 @@
+--- 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 $");
+ 
+ #include <assert.h>
+-#include <stdio.h>
  #include <stdlib.h>
++#include <unistd.h>
++#include "CrashReporterClient.h"
++#include "_simple.h"
  
  void
 -__assert(func, file, line, failedexpr)
@@ -9,3 +16,54 @@
  	const char *func, *file;
  	int line;
  	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,
+ 		     "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);
++		}
++	} else {
++		_simple_dprintf(STDERR_FILENO,
+ 		     "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);
++		}
++	}
+ 	abort();
+ 	/* NOTREACHED */
+ }