diff options
author | Steve Huston <shuston@riverace.com> | 2001-12-19 00:03:08 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2001-12-19 00:03:08 +0000 |
commit | 9618f8b407e30b6e2ed1dc88d6b6490bee25c87f (patch) | |
tree | e2319a3e136a8c0cf82a6b8481f047d85dcf875d /ace/Svc_Handler.cpp | |
parent | 817e502ff5d3bb74f890a896ec017b091dcc7efd (diff) | |
download | ATCD-9618f8b407e30b6e2ed1dc88d6b6490bee25c87f.tar.gz |
ChangeLogTag:Tue Dec 18 18:50:29 2001 Steve Huston <shuston@riverace.com>
Diffstat (limited to 'ace/Svc_Handler.cpp')
-rw-r--r-- | ace/Svc_Handler.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ace/Svc_Handler.cpp b/ace/Svc_Handler.cpp index f46c36d4392..9614a404e12 100644 --- a/ace/Svc_Handler.cpp +++ b/ace/Svc_Handler.cpp @@ -63,6 +63,35 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_USE>::operator new (size_t n) } } +#if defined (ACE_HAS_NEW_NOTHROW) +template <PR_ST_1, ACE_SYNCH_DECL> void * +ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_USE>::operator new (size_t n, + const nothrow_t&) +{ + ACE_TRACE ("ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_USE>::operator new(nothrow)"); + + ACE_Dynamic *const dynamic_instance = ACE_Dynamic::instance (); + + if (dynamic_instance == 0) + { + // If this ACE_ASSERT fails, it may be due to running of out TSS + // keys. Try using ACE_HAS_TSS_EMULATION, or increasing + // ACE_DEFAULT_THREAD_KEYS if already using TSS emulation. + ACE_ASSERT (dynamic_instance != 0); + + return 0; + } + else + { + // Allocate the memory and store it (usually in thread-specific + // storage, depending on config flags). + dynamic_instance->set (); + + return ::new(nothrow) char[n]; + } +} +#endif /* ACE_HAS_NEW_NOTHROW */ + template <PR_ST_1, ACE_SYNCH_DECL> void ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_USE>::destroy (void) { |