mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	It now calls __libc_assert, which contains similar logic. The assert call only requires memory allocation for the message translation, so test-assert2.c is adapted to handle it. It also removes the fxprintf from assert/assert_perror; although it is not 100% backwards-compatible (write message only if there is a file descriptor associated with the stderr). It now writes bytes directly without going through the wide stream state. Checked on aarch64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* libc-internal assert that calls __libc_message.
 | 
						|
   Copyright (C) 2022-2025 Free Software Foundation, Inc.
 | 
						|
   This file is part of the GNU C Library.
 | 
						|
 | 
						|
   The GNU C Library is free software; you can redistribute it and/or
 | 
						|
   modify it under the terms of the GNU Lesser General Public
 | 
						|
   License as published by the Free Software Foundation; either
 | 
						|
   version 2.1 of the License, or (at your option) any later version.
 | 
						|
 | 
						|
   The GNU C Library is distributed in the hope that it will be useful,
 | 
						|
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
   Lesser General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU Lesser General Public
 | 
						|
   License along with the GNU C Library; if not, see
 | 
						|
   <https://www.gnu.org/licenses/>.  */
 | 
						|
 | 
						|
#include <_itoa.h>
 | 
						|
#include <array_length.h>
 | 
						|
#include <intprops.h>
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
void
 | 
						|
__libc_assert_fail (const char *assertion, const char *file, unsigned int line,
 | 
						|
                    const char *function)
 | 
						|
{
 | 
						|
  char linebuf[INT_BUFSIZE_BOUND (unsigned int)];
 | 
						|
  array_end (linebuf)[-1] = '\0';
 | 
						|
  char *linestr = _itoa_word (line, array_end (linebuf) - 1, 10, 0);
 | 
						|
  __libc_assert (
 | 
						|
      "Fatal glibc error: %s:%s (%s): assertion failed: %s\n", file, linestr,
 | 
						|
      function, assertion);
 | 
						|
}
 |