Author: markt Date: Tue Feb 7 10:17:25 2017 New Revision: 1781984 URL: http://svn.apache.org/viewvc?rev=1781984&view=rev Log: Further follow-up to r1781943 Fix crash on JVM shutdown (caused by global pool npe)
Modified: tomcat/native/trunk/native/include/tcn_api.h tomcat/native/trunk/native/os/win32/system.c tomcat/native/trunk/native/src/jnilib.c Modified: tomcat/native/trunk/native/include/tcn_api.h URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/include/tcn_api.h?rev=1781984&r1=1781983&r2=1781984&view=diff ============================================================================== --- tomcat/native/trunk/native/include/tcn_api.h (original) +++ tomcat/native/trunk/native/include/tcn_api.h Tue Feb 7 10:17:25 2017 @@ -36,10 +36,14 @@ * Tomcat Native Public API */ -/* Return global apr pool +/* Return global apr pool, creating it if necessary */ apr_pool_t *tcn_get_global_pool(void); +/* Return global apr pool, optionally creating it if necessary + */ +apr_pool_t *tcn_get_global_pool_int(int); + /* Return global String class */ jclass tcn_get_string_class(void); Modified: tomcat/native/trunk/native/os/win32/system.c URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/os/win32/system.c?rev=1781984&r1=1781983&r2=1781984&view=diff ============================================================================== --- tomcat/native/trunk/native/os/win32/system.c (original) +++ tomcat/native/trunk/native/os/win32/system.c Tue Feb 7 10:17:25 2017 @@ -102,7 +102,9 @@ DllMain( */ case DLL_THREAD_DETACH: #ifdef HAVE_OPENSSL - SSL_thread_exit(); + if (tcn_get_global_pool_int(0)) { + SSL_thread_exit(); + } #endif break; Modified: tomcat/native/trunk/native/src/jnilib.c URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/jnilib.c?rev=1781984&r1=1781983&r2=1781984&view=diff ============================================================================== --- tomcat/native/trunk/native/src/jnilib.c (original) +++ tomcat/native/trunk/native/src/jnilib.c Tue Feb 7 10:17:25 2017 @@ -454,7 +454,12 @@ TCN_IMPLEMENT_CALL(jint, Library, size)( apr_pool_t *tcn_get_global_pool() { - if (!tcn_global_pool) { + return tcn_get_global_pool_int(1); +} + +apr_pool_t *tcn_get_global_pool_int(int create) +{ + if (!tcn_global_pool && create) { if (apr_pool_create(&tcn_global_pool, NULL) != APR_SUCCESS) { return NULL; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org