Hi,

There is a bug in 'e_os.h'.
The effect is that Win32 multithreaded applications crash.

The problem is that currently OPENSSL_SYS_MSDOS is
defined also for Win32 platform, and MS_STATIC is defined 
as 'static' as follows:

   #if defined(OPENSSL_SYS_MSDOS)
   #  define MS_STATIC  static
   #else
   #  define MS_STATIC
   #endif

MS_STATIC is used here and there where there is a large
auto variable used. In Win32 those are not a problem - instead
the code is now not re-entrant.

I would recommend to change that problematic definition as follows:

#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32)
#  define MS_STATIC     static
#else
#  define MS_STATIC
#endif

The bug seems to exist in all 0.9.7 snapshots.

In 0.9.6 the definition is as follows :

   #if defined(WIN16) || defined(MSDOS)
   #  define MS_STATIC  static
   #else
   #  define MS_STATIC
   #endif
This works fine in all Windoze environments.

Best regards
Raimo Vuonnala
Nokia Internet Communications
Helsinki, Finland
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to