From: Keith Marshall Date: Tue, 26 Jan 2021 19:58:39 +0000 (+0000) Subject: Avoid proliferation of static snprintf() implementations. X-Git-Tag: wsl-5.4.2-release~9 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=467402e1dab9396c4f21b894dfb2c7374a483542;hp=c9a591d339444debb8d6de80e23edec076e49cce;p=mingw%2Fmingw-org-wsl.git Avoid proliferation of static snprintf() implementations. --- diff --git a/mingwrt/ChangeLog b/mingwrt/ChangeLog index b3eb4f4..e77118a 100644 --- a/mingwrt/ChangeLog +++ b/mingwrt/ChangeLog @@ -1,3 +1,18 @@ +2021-01-26 Keith Marshall + + Avoid proliferation of static snprintf() implementations. + + * mingwex/dlfcn.c (dlfcn_store_error_message): Do NOT use... + (vsnprintf): ...this static inline function; prefer to call... + (__mingw_vsnprintf): ...this extern implementation, directly. + + * mingwex/dlfcn.c (dlfcn_strerror) + * mingwex/setenv.c (__mingw_setenv) + * mingwex/strerror_r.c (strerror_r): Do NOT use... + (snprintf): ...this; it expands to create static clones of... + (__mingw_snprintf): ...this extern implementation; prefer to call it + directly, to avoid code redundancy. + 2020-08-07 Keith Marshall Initialize MSVCRT.DLL's _pgmptr reference. diff --git a/mingwrt/mingwex/dlfcn.c b/mingwrt/mingwex/dlfcn.c index 59dbda2..9f4c5b8 100644 --- a/mingwrt/mingwex/dlfcn.c +++ b/mingwrt/mingwex/dlfcn.c @@ -6,8 +6,8 @@ * * $Id$ * - * Written by Keith Marshall - * Copyright (C) 2014, MinGW.org Project + * Written by Keith Marshall + * Copyright (C) 2014, 2021, MinGW.org Project * * * Permission is hereby granted, free of charge, to any person obtaining a @@ -91,12 +91,12 @@ static void dlfcn_store_error_message( const char *fmt, ... ) int msglen; va_list argv; va_start( argv, fmt ); - msglen = 1 + vsnprintf( NULL, 0, fmt, argv ); + msglen = 1 + __mingw_vsnprintf( NULL, 0, fmt, argv ); if( (dlfcn_error_pending = realloc( dlfcn_error_message, msglen )) != NULL ) /* * Store message, only if a buffer was successfully allocated. */ - vsnprintf( dlfcn_error_pending, msglen, fmt, argv ); + __mingw_vsnprintf( dlfcn_error_pending, msglen, fmt, argv ); dlfcn_error_message = dlfcn_error_pending; va_end( argv ); } @@ -132,8 +132,8 @@ static char *dlfcn_strerror( int errcode ) * formatted reference to the unknown error code. */ char *fmt = "Unknown error %d"; - char tmp[1 + snprintf( NULL, 0, fmt, errcode )]; - snprintf( tmp, sizeof( tmp ), fmt, errcode ); + char tmp[1 + __mingw_snprintf( NULL, 0, fmt, errcode )]; + __mingw_snprintf( tmp, sizeof( tmp ), fmt, errcode ); text = strdup( tmp ); } /* However we derived it, the error description is now available diff --git a/mingwrt/mingwex/setenv.c b/mingwrt/mingwex/setenv.c index 57b804d..548bb2c 100644 --- a/mingwrt/mingwex/setenv.c +++ b/mingwrt/mingwex/setenv.c @@ -7,8 +7,8 @@ * * $Id$ * - * Written by Keith Marshall - * Copyright (C) 2016, MinGW.org Project + * Written by Keith Marshall + * Copyright (C) 2016, 2021, MinGW.org Project * * * Permission is hereby granted, free of charge, to any person obtaining a @@ -64,8 +64,8 @@ int __mingw_setenv( const char *var, const char *value, int overwrite ) */ const char *fmt = "%s=%s"; const char *val = value ? value : ""; - char buf[1 + snprintf( NULL, 0, fmt, var, val )]; - snprintf( buf, sizeof( buf ), fmt, var, val ); + char buf[1 + __mingw_snprintf( NULL, 0, fmt, var, val )]; + __mingw_snprintf( buf, sizeof( buf ), fmt, var, val ); /* "buf" is now formatted as "var=value", in the form * required by putenv(), but it exists only within our diff --git a/mingwrt/mingwex/strerror_r.c b/mingwrt/mingwex/strerror_r.c index 4194357..fa035cc 100644 --- a/mingwrt/mingwex/strerror_r.c +++ b/mingwrt/mingwex/strerror_r.c @@ -5,8 +5,8 @@ * * $Id$ * - * Written by Keith Marshall - * Copyright (C) 2016, 2017, MinGW.org Project + * Written by Keith Marshall + * Copyright (C) 2016, 2017, 2021, MinGW.org Project * * * Permission is hereby granted, free of charge, to any person obtaining a @@ -68,13 +68,13 @@ int strerror_r( int errnum, char *buf, size_t len ) * range INT_MAX < errnum <= UINT_MAX, while sys_nerr is expected * to be less than INT_MAX. */ - snprintf( buf, len, "Unknown error: %d", errnum ); + __mingw_snprintf( buf, len, "Unknown error: %d", errnum ); return errno = EINVAL; } /* errnum appears to be valid; copy the associated message, while * checking that its entire text is copied... */ - if( snprintf( buf, len, "%s", strerror( errnum )) >= len ) + if( __mingw_snprintf( buf, len, "%s", strerror( errnum )) >= len ) /* * ...otherwise, set errno on truncation. */