Hi, Julius, this is the combined diff of both commits: git diff e1ce867e5ab0c^^ e1ce867e5ab0c On Feb 10, Julius Goryavsky wrote:
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index a7b98a11050..7d87c4a42b3 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -104,6 +105,7 @@ ENDMACRO()
INSTALL_COMPAT_HEADER(my_global.h "") INSTALL_COMPAT_HEADER(my_config.h "") +INSTALL_COMPAT_HEADER(my_alloca.h "")
I wouldn't use INSTALL_COMPAT_HEADER for my_alloca.h
INSTALL_COMPAT_HEADER(my_sys.h "") INSTALL_COMPAT_HEADER(mysql_version.h " #include <mariadb_version.h> diff --git a/include/my_alloca.h b/include/my_alloca.h new file mode 100644 index 00000000000..fec0320195e --- /dev/null +++ b/include/my_alloca.h @@ -0,0 +1,37 @@ +/* Copyright (c) 2023, MariaDB Corporation. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + +#ifndef MY_ALLOCA_INCLUDED +#define MY_ALLOCA_INCLUDED + +#ifdef _WIN32 +#include <malloc.h> /*for alloca*/ +#ifndef alloca
When can alloca be defined?
+#define alloca _alloca +#endif +#else +#include <stdlib.h>
why stdlib.h?
+#ifdef HAVE_ALLOCA_H +#include <alloca.h> +#endif +#endif + +#if defined(HAVE_ALLOCA) +#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) && !defined(alloca)
add a comment describing your MinGW use case when this #if is needed
+#define alloca __builtin_alloca +#endif /* GNUC */ +#endif + +#endif /* MY_ALLOCA_INCLUDED */ diff --git a/include/mysql/service_encryption.h b/include/mysql/service_encryption.h index 69d205a27e8..cab1418e1d6 100644 --- a/include/mysql/service_encryption.h +++ b/include/mysql/service_encryption.h @@ -24,21 +24,19 @@ *provider* (encryption plugin). */
+#ifndef MYSQL_ABI_CHECK +#include <my_alloca.h> +#endif + #ifdef __cplusplus extern "C" { #endif
#ifndef MYSQL_ABI_CHECK
why not to put #include <my_alloca.h> here?
#ifdef _WIN32 -#include <malloc.h> #ifndef __cplusplus #define inline __inline #endif -#else -#include <stdlib.h>
I suspect stdlib.h belongs here, not in my_alloca.h
-#ifdef HAVE_ALLOCA_H -#include <alloca.h> -#endif #endif #endif
Regards, Sergei VP of MariaDB Server Engineering and security@mariadb.org