Commit 30db55ac33 for openssl.org
commit 30db55ac33cf6b815067149c233f45e4199df9b0
Author: Nikola Pajkovsky <nikolap@openssl.org>
Date: Tue May 19 15:42:47 2026 +0200
util: set thunks for sk_${nametype}_new(_reserve)
call OPENSSL_sk_set_thunks for sk_${nametype}_new and
sk_${nametype}_new_reserve, and wrap the long generated stack
constructor and deep-copy macros across multiple lines so the nested
thunk setup is easier to read and maintain.
Signed-off-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Milan Broz <mbroz@openssl.org>
MergeDate: Thu Jun 25 12:12:46 2026
(Merged from https://github.com/openssl/openssl/pull/31523)
diff --git a/util/perl/OpenSSL/stackhash.pm b/util/perl/OpenSSL/stackhash.pm
index 39f71e1ce7..e49e2d4def 100644
--- a/util/perl/OpenSSL/stackhash.pm
+++ b/util/perl/OpenSSL/stackhash.pm
@@ -28,9 +28,30 @@ sub generate_stack_macros_int {
SKM_DEFINE_STACK_OF_INTERNAL(${nametype}, ${realtype}, ${plaintype})
#define sk_${nametype}_num(sk) OPENSSL_sk_num(ossl_check_const_${nametype}_sk_type(sk))
#define sk_${nametype}_value(sk, idx) ((${realtype} *)OPENSSL_sk_value(ossl_check_const_${nametype}_sk_type(sk), (idx)))
-#define sk_${nametype}_new(cmp) ((STACK_OF(${nametype}) *)OPENSSL_sk_set_copy_thunks(OPENSSL_sk_set_cmp_thunks(OPENSSL_sk_new(ossl_check_${nametype}_compfunc_type(cmp)), sk_${nametype}_cmpfunc_thunk), sk_${nametype}_copyfunc_thunk))
-#define sk_${nametype}_new_null() ((STACK_OF(${nametype}) *)OPENSSL_sk_set_thunks(OPENSSL_sk_set_copy_thunks(OPENSSL_sk_new_null(), sk_${nametype}_copyfunc_thunk), sk_${nametype}_freefunc_thunk))
-#define sk_${nametype}_new_reserve(cmp, n) ((STACK_OF(${nametype}) *)OPENSSL_sk_set_copy_thunks(OPENSSL_sk_set_cmp_thunks(OPENSSL_sk_new_reserve(ossl_check_${nametype}_compfunc_type(cmp), (n)), sk_${nametype}_cmpfunc_thunk), sk_${nametype}_copyfunc_thunk))
+#define sk_${nametype}_new(cmp) \\
+ ((STACK_OF(${nametype}) *)OPENSSL_sk_set_thunks( \\
+ OPENSSL_sk_set_copy_thunks( \\
+ OPENSSL_sk_set_cmp_thunks( \\
+ OPENSSL_sk_new(ossl_check_${nametype}_compfunc_type(cmp)), \\
+ sk_${nametype}_cmpfunc_thunk), \\
+ sk_${nametype}_copyfunc_thunk), \\
+ sk_${nametype}_freefunc_thunk))
+#define sk_${nametype}_new_null() \\
+ ((STACK_OF(${nametype}) *)OPENSSL_sk_set_thunks( \\
+ OPENSSL_sk_set_copy_thunks( \\
+ OPENSSL_sk_set_cmp_thunks( \\
+ OPENSSL_sk_new_null(), \\
+ sk_${nametype}_cmpfunc_thunk), \\
+ sk_${nametype}_copyfunc_thunk), \\
+ sk_${nametype}_freefunc_thunk))
+#define sk_${nametype}_new_reserve(cmp, n) \\
+ ((STACK_OF(${nametype}) *)OPENSSL_sk_set_thunks( \\
+ OPENSSL_sk_set_copy_thunks( \\
+ OPENSSL_sk_set_cmp_thunks( \\
+ OPENSSL_sk_new_reserve(ossl_check_${nametype}_compfunc_type(cmp), (n)), \\
+ sk_${nametype}_cmpfunc_thunk), \\
+ sk_${nametype}_copyfunc_thunk), \\
+ sk_${nametype}_freefunc_thunk))
#define sk_${nametype}_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_${nametype}_sk_type(sk), (n))
#define sk_${nametype}_free(sk) OPENSSL_sk_free(ossl_check_${nametype}_sk_type(sk))
#define sk_${nametype}_zero(sk) OPENSSL_sk_zero(ossl_check_${nametype}_sk_type(sk))
@@ -49,7 +70,11 @@ SKM_DEFINE_STACK_OF_INTERNAL(${nametype}, ${realtype}, ${plaintype})
#define sk_${nametype}_sort(sk) OPENSSL_sk_sort(ossl_check_${nametype}_sk_type(sk))
#define sk_${nametype}_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_${nametype}_sk_type(sk))
#define sk_${nametype}_dup(sk) ((STACK_OF(${nametype}) *)OPENSSL_sk_dup(ossl_check_const_${nametype}_sk_type(sk)))
-#define sk_${nametype}_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(${nametype}) *)OPENSSL_sk_deep_copy(ossl_check_const_${nametype}_sk_type(sk), ossl_check_${nametype}_copyfunc_type(copyfunc), ossl_check_${nametype}_freefunc_type(freefunc)))
+#define sk_${nametype}_deep_copy(sk, copyfunc, freefunc) \\
+ ((STACK_OF(${nametype}) *)OPENSSL_sk_deep_copy( \\
+ ossl_check_const_${nametype}_sk_type(sk), \\
+ ossl_check_${nametype}_copyfunc_type(copyfunc), \\
+ ossl_check_${nametype}_freefunc_type(freefunc)))
#define sk_${nametype}_set_cmp_func(sk, cmp) ((sk_${nametype}_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_${nametype}_sk_type(sk), ossl_check_${nametype}_compfunc_type(cmp)))
END_MACROS