diff options
author | Marc Laukien <marc@zeroc.com> | 2003-02-22 17:19:46 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2003-02-22 17:19:46 +0000 |
commit | 0d984b923f33e2a6f99b6f0e59cdbee270493340 (patch) | |
tree | 921a4c2101bb0ebab9cc24001b0e6fa8c7851924 /cpp/src/Ice/IncomingAsync.cpp | |
parent | fix (diff) | |
download | ice-0d984b923f33e2a6f99b6f0e59cdbee270493340.tar.bz2 ice-0d984b923f33e2a6f99b6f0e59cdbee270493340.tar.xz ice-0d984b923f33e2a6f99b6f0e59cdbee270493340.zip |
fixed AMD exception bug
Diffstat (limited to 'cpp/src/Ice/IncomingAsync.cpp')
-rw-r--r-- | cpp/src/Ice/IncomingAsync.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/Ice/IncomingAsync.cpp b/cpp/src/Ice/IncomingAsync.cpp index b9d34f7aa1e..fe3b6efb4a0 100644 --- a/cpp/src/Ice/IncomingAsync.cpp +++ b/cpp/src/Ice/IncomingAsync.cpp @@ -31,6 +31,7 @@ void IceInternal::decRef(AMD_Object_ice_invoke* p) { p->__decRef(); } IceInternal::IncomingAsync::IncomingAsync(Incoming& in) : IncomingBase(in), + _finished(false), _instanceCopy(_is.instance()), _connectionCopy(_connection) { @@ -39,6 +40,9 @@ IceInternal::IncomingAsync::IncomingAsync(Incoming& in) : void IceInternal::IncomingAsync::__response(bool ok) { + assert(!_finished); + _finished = true; + if(_response) { _os.endWriteEncaps(); @@ -59,6 +63,9 @@ IceInternal::IncomingAsync::__response(bool ok) void IceInternal::IncomingAsync::__exception(const Exception& exc) { + assert(!_finished); + _finished = true; + try { exc.ice_throw(); @@ -156,6 +163,9 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) void IceInternal::IncomingAsync::__exception(const std::exception& ex) { + assert(!_finished); + _finished = true; + if(_response) { _os.endWriteEncaps(); @@ -172,6 +182,9 @@ IceInternal::IncomingAsync::__exception(const std::exception& ex) void IceInternal::IncomingAsync::__exception() { + assert(!_finished); + _finished = true; + if(_response) { _os.endWriteEncaps(); |