diff options
author | Matthew Newhook <matthew@zeroc.com> | 2005-07-20 16:10:59 +0000 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2005-07-20 16:10:59 +0000 |
commit | 5d064ad06b113b5f0b0a4921ac33e08035cd20d5 (patch) | |
tree | da4dc022cc97a54dc377b5228983820f30025b06 /cppe/src | |
parent | added LogToFile property to tests. (diff) | |
download | ice-5d064ad06b113b5f0b0a4921ac33e08035cd20d5.tar.bz2 ice-5d064ad06b113b5f0b0a4921ac33e08035cd20d5.tar.xz ice-5d064ad06b113b5f0b0a4921ac33e08035cd20d5.zip |
Fix WinCE failure in location test.
Diffstat (limited to 'cppe/src')
-rw-r--r-- | cppe/src/IceE/LocatorInfo.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/cppe/src/IceE/LocatorInfo.cpp b/cppe/src/IceE/LocatorInfo.cpp index 13068550da2..15bbefd7d5d 100644 --- a/cppe/src/IceE/LocatorInfo.cpp +++ b/cppe/src/IceE/LocatorInfo.cpp @@ -278,6 +278,10 @@ IceInternal::LocatorInfo::getEndpoints(const IndirectReferencePtr& ref, bool& ca ObjectPrx object; cached = true; + // COMPILERFIX: EVC 4.0 sp4 ARMv4 compiler messes up exception + // handling on occasion. + auto_ptr<LocalException> exception; + try { if(!ref->getAdapterId().empty()) @@ -336,14 +340,14 @@ IceInternal::LocatorInfo::getEndpoints(const IndirectReferencePtr& ref, bool& ca NotRegisteredException ex(__FILE__, __LINE__); ex.kindOfObject = "object adapter"; ex.id = ref->getAdapterId(); - throw ex; + exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex.ice_clone())); } catch(const ObjectNotFoundException&) { NotRegisteredException ex(__FILE__, __LINE__); ex.kindOfObject = "object"; ex.id = identityToString(ref->getIdentity()); - throw ex; + exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex.ice_clone())); } catch(const NotRegisteredException&) { @@ -367,6 +371,11 @@ IceInternal::LocatorInfo::getEndpoints(const IndirectReferencePtr& ref, bool& ca } throw; } + + if(exception.get()) + { + exception->ice_throw(); + } if(ref->getInstance()->traceLevels()->location >= 1 && !endpoints.empty()) { |