Subject: bug#13495: Compilation fails on Mac OS X 10.8.0

From: Paul Eggert <[email-masked]>
Date: Sat, 19 Jan 2013 21:15:19 -0800

On 01/19/2013 08:07 PM, Assaf Gordon wrote:
> Which looks like some macro expansion, but I couldn't find the declaration of this macro.

It's because stpncpy.c earlier has this:

# define __stpncpy stpncpy

which means that this:

char *
__stpncpy (char *dest, const char *src, size_t n)
{

expands to this:

char *
stpncpy (char *dest, const char *src, size_t n)
{

which in turn is expanded by the stpncpy macro in the system string.h,
to this:

char *
((__builtin_object_size (char *dest, 0) != (size_t) -1) ? __builtin___stpncpy_chk (char *dest, const char *src, size_t n, __builtin_object_size (char *dest, 2 > 1)) : __inline_stpncpy_chk (char *dest, const char *src, size_t n))
{

which is obviously bogus.

Does something like the following patch fix things for you?

diff --git a/lib/stpncpy.c b/lib/stpncpy.c                                      
index 466cd5f..8b14fb9 100644                                                   
--- a/lib/stpncpy.c                                                             
+++ b/lib/stpncpy.c                                                             
@@ -31,7 +31,7 @@
 /* Copy no more than N bytes of SRC to DST, returning a pointer past the       
    last non-NUL byte written into DST.  */                                     
 char *                                                                         
-__stpncpy (char *dest, const char *src, size_t n)                              
+(__stpncpy) (char *dest, const char *src, size_t n)                            
 {                                                                              
   char c;                                                                      
   char *s = dest;