From: Ozkan S. <se...@gm...> - 2011-11-01 17:52:52
|
On Tue, Nov 1, 2011 at 7:11 PM, Ozkan Sezer <se...@gm...> wrote: > On Tue, Nov 1, 2011 at 5:13 PM, Komisar <ko...@tu...> wrote: >> Also I see lot of >> "stdio.h:287:28: warning: inline function 'vsnprintf' declared but never >> defined [enabled by default]" >> Warnings when compiling mingw-w64-crt >> http://komisar.gin.by/test/ugh.txt >> >> From: Komisar [mailto:ko...@tu...] >> Sent: Tuesday, November 01, 2011 5:54 PM >> To: 'min...@li...' >> Subject: stdio.h problem >> >> I think something wrong with last commit 2011-10-31. >> Not sure about correctness this of the patch but review it. >> http://komisar.gin.by/test/stdio.h.diff >> > > Indeed, the lines you touched seem broken. *Possibly* better > patch below, using __MINGW_ATTRIB_NONNULL macro for consistency > and adding __restict__ to args 1 and 2 and also marked as nothrow > the asprintf and vasprintf (JonY, Kai: verify.) > > --- stdio.h.orig > +++ stdio.h > @@ -162,11 +162,11 @@ extern > __attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > int __cdecl __mingw_vsprintf (char * __restrict__ , const char * > __restrict__ , va_list) __MINGW_NOTHROW; > extern > - __attribute__ ((format (gnu_printf, 2, 3))) __attribute__((nonnull (1,2))) __ > - int __cdecl mingw_asprintf(char **ret, const char *format, ...); > + __attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(1,2) > + int __cdecl __mingw_asprintf(char ** __restrict__ , const char * > __restrict__ , ...) __MINGW_NOTHROW; > extern > - __attribute__ ((format (gnu_printf, 2, 0))) __attribute__((nonnull (1,2))) __ > - int __cdecl mingw_vasprintf(char **ret, const char *format, va_list ap); > + __attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(1,2) > + int __cdecl __mingw_vasprintf(char ** __restrict__ , const char * > __restrict__ , va_list) __MINGW_NOTHROW; > > #if __USE_MINGW_ANSI_STDIO > /* > @@ -284,7 +284,7 @@ int vsnprintf (char *__stream, size_t __ > # undef vsnprintf > int __cdecl snprintf(char * __restrict__ s, size_t n, const char * > __restrict__ format, ...); > #ifndef __CRT__NO_INLINE > - __CRT__INLINE int __cdecl vsnprintf(char * __restrict__ > _DstBuf,size_t _MaxCount,const char * __restrict__ _Format,va_list > _ArgList) __MINGW_ATTRIB_DEPRECATED_MSVC2005 > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > + __CRT_INLINE int __cdecl vsnprintf(char * __restrict__ > _DstBuf,size_t _MaxCount,const char * __restrict__ _Format,va_list > _ArgList) __MINGW_ATTRIB_DEPRECATED_MSVC2005 > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > #endif /* __CRT__NO_INLINE */ > #pragma pop_macro ("vsnprintf") > #pragma pop_macro ("snprintf") > > > As for the warnings you mention: Do you see them _after_ applying > your fix? Hmm, OK, adding a #define __CRT__NO_INLINE at top of mingw-w64-crt/stdio/asprintf.c before the includes should take of that warning I think. > > -- > O.S. > -- O.S. |