Commit b32166b4 authored by Matt Caswell's avatar Matt Caswell
Browse files

Workaround for VisualStudio 2015 bug



VisualStudio 2015 has a bug where an internal compiler error was occurring.
By reordering the DEFINE_STACK_OF declarations for SSL_CIPHER and SSL_COMP
until after the ssl3.h include everything seems ok again.

Reviewed-by: default avatarViktor Dukhovni <viktor@openssl.org>
parent 0421c00e
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -326,8 +326,8 @@ typedef struct tls_sigalgs_st TLS_SIGALGS;
typedef struct ssl_conf_ctx_st SSL_CONF_CTX;
typedef struct ssl_comp_st SSL_COMP;

DEFINE_STACK_OF_CONST(SSL_CIPHER)
DEFINE_STACK_OF(SSL_COMP)
STACK_OF(SSL_CIPHER);
STACK_OF(SSL_COMP);

/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/
typedef struct srtp_protection_profile_st {
@@ -907,6 +907,13 @@ __owur int SSL_extension_supported(unsigned int ext_type);
extern "C" {
#endif

/*
 * These need to be after the above set of includes due to a compiler bug
 * in VisualStudio 2015
 */
DEFINE_STACK_OF_CONST(SSL_CIPHER)
DEFINE_STACK_OF(SSL_COMP)

/* compatibility */
# define SSL_set_app_data(s,arg)         (SSL_set_ex_data(s,0,(char *)arg))
# define SSL_get_app_data(s)             (SSL_get_ex_data(s,0))
+2 −1
Original line number Diff line number Diff line
@@ -641,7 +641,8 @@ sub do_defs
				next;
			}
			if ($tag{'TRUE'} != -1) {
				if (/^\s*DECLARE_STACK_OF\s*\(\s*(\w*)\s*\)/) {
				if (/^\s*DEFINE_STACK_OF\s*\(\s*(\w*)\s*\)/
						|| /^\s*DEFINE_STACK_OF_CONST\s*\(\s*(\w*)\s*\)/) {
					next;
				} elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) {
					$def .= "int d2i_$3(void);";