From: Bruno Haible Date: Sun, 25 Nov 2018 01:10:44 +0000 (+0100) Subject: libasprintf: On mingw, really use our vasprintf function, not mingw_vasprintf. X-Git-Tag: v0.20~203 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=63295aac24c693d2d902eadd272259b7bdd7eae3;p=thirdparty%2Fgettext.git libasprintf: On mingw, really use our vasprintf function, not mingw_vasprintf. mingw now has a definition of 'vasprintf' in that redirects to mingw_vasprintf, which does not support argument reordering (i.e. HAVE_POSIX_PRINTF is not defined). Make sure to avoid this function and use the one defined in our lib-asprintf.c instead. * gettext-runtime/libasprintf/lib-asprintf.h (asprintf): Define as macro redirecting to libasprintf_asprintf. (vasprintf): Define as macro redirecting to libasprintf_vasprintf. * gettext-runtime/libasprintf/lib-asprintf.c: Define also libasprintf_asprintf and libasprintf_vasprintf. * gettext-runtime/libasprintf/autosprintf.cc: Include lib-asprintf.h last. --- diff --git a/gettext-runtime/libasprintf/autosprintf.cc b/gettext-runtime/libasprintf/autosprintf.cc index 094770695..4c3276298 100644 --- a/gettext-runtime/libasprintf/autosprintf.cc +++ b/gettext-runtime/libasprintf/autosprintf.cc @@ -28,7 +28,6 @@ #include #include #include -#include "lib-asprintf.h" /* std::swap() is in since C++11. */ #if __cplusplus >= 201103L @@ -37,6 +36,10 @@ # include #endif +/* This include must come last, since it contains overrides of functions that + the system may provide (namely, vasprintf). */ +#include "lib-asprintf.h" + namespace gnu { diff --git a/gettext-runtime/libasprintf/lib-asprintf.c b/gettext-runtime/libasprintf/lib-asprintf.c index 0cab6225a..54649659b 100644 --- a/gettext-runtime/libasprintf/lib-asprintf.c +++ b/gettext-runtime/libasprintf/lib-asprintf.c @@ -1,5 +1,5 @@ /* Library functions for class autosprintf. - Copyright (C) 2002-2003, 2006, 2015-2016 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2006, 2018 Free Software Foundation, Inc. Written by Bruno Haible , 2002. This program is free software: you can redistribute it and/or modify @@ -31,8 +31,19 @@ #include "vasnprintf.c" #include "asnprintf.c" +/* Define to the same symbols as in lib-asprintf.h. */ +#define asprintf libasprintf_asprintf +#define vasprintf libasprintf_vasprintf + /* Define functions declared in "vasprintf.h". */ #include "vasprintf.c" #include "asprintf.c" +/* Define the same functions also without the 'libasprintf_' prefix, + for binary backward-compatibility. */ +#undef asprintf +#undef vasprintf +#include "vasprintf.c" +#include "asprintf.c" + #endif diff --git a/gettext-runtime/libasprintf/lib-asprintf.h b/gettext-runtime/libasprintf/lib-asprintf.h index 8d6497ef8..1ad8b90f7 100644 --- a/gettext-runtime/libasprintf/lib-asprintf.h +++ b/gettext-runtime/libasprintf/lib-asprintf.h @@ -1,5 +1,5 @@ /* Library functions for class autosprintf. - Copyright (C) 2002-2003, 2015-2016 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2018 Free Software Foundation, Inc. Written by Bruno Haible , 2002. This program is free software: you can redistribute it and/or modify @@ -26,6 +26,11 @@ #else +/* Define to symbols that are guaranteed to not be defined by the system + header files. */ +#define asprintf libasprintf_asprintf +#define vasprintf libasprintf_vasprintf + /* Get asprintf(), vasprintf() declarations. */ #include "vasprintf.h"