Sander Striker wrote:
After apr_terminate() when calling any function, the behaviour is undefined. This is as expected. I don't see a need to protect against that.
Sure, but the same logic can then be applied to the 'if (apr_initialized++)' Seems we after all honor multiple invocations of both apr_initialize/apr_terminate, etc. Threaded applications might be unaware that other thread called apr_terminate and that this call will actually cause the apr to terminate. So since one cannot be sure that the call to the apr_terminate() will terminate the apr, application using apr will need to duplicate the logic in apr_initialize/apr_terminate for assuring it'a a singleton and at which time it is safe to call the apr_pool_create, and in which it is not. Anyhow, it's a simple compare against an int, so a completely benign operation, but allowing to not core dump in threaded environment. Regards, Mladen
