You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2008/11/05 22:12:58 UTC
svn commit: r711699 - in /activemq/activemq-cpp/trunk/src/main/decaf/io:
FilterInputStream.h FilterOutputStream.h
Author: tabish
Date: Wed Nov 5 13:12:58 2008
New Revision: 711699
URL: http://svn.apache.org/viewvc?rev=711699&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQCPP-200
Move deletion of buffer to the destructor, not the close method.
Modified:
activemq/activemq-cpp/trunk/src/main/decaf/io/FilterInputStream.h
activemq/activemq-cpp/trunk/src/main/decaf/io/FilterOutputStream.h
Modified: activemq/activemq-cpp/trunk/src/main/decaf/io/FilterInputStream.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/io/FilterInputStream.h?rev=711699&r1=711698&r2=711699&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/io/FilterInputStream.h (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/io/FilterInputStream.h Wed Nov 5 13:12:58 2008
@@ -50,7 +50,7 @@
bool own;
// Indicates that this stream was closed
- bool closed;
+ volatile bool closed;
public:
@@ -68,6 +68,11 @@
virtual ~FilterInputStream() {
try {
this->close();
+
+ if( own ) {
+ delete inputStream;
+ }
+ inputStream = NULL;
}
DECAF_CATCH_NOTHROW( IOException )
DECAF_CATCHALL_NOTHROW( )
@@ -158,12 +163,8 @@
*/
virtual void close() throw ( lang::Exception ) {
try {
- if( inputStream != NULL ) {
+ if( !closed && inputStream != NULL ) {
inputStream->close();
- if( own ) {
- delete inputStream;
- }
- inputStream = NULL;
}
this->closed = true;
}
Modified: activemq/activemq-cpp/trunk/src/main/decaf/io/FilterOutputStream.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/io/FilterOutputStream.h?rev=711699&r1=711698&r2=711699&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/io/FilterOutputStream.h (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/io/FilterOutputStream.h Wed Nov 5 13:12:58 2008
@@ -59,7 +59,7 @@
bool own;
// Indicates that this stream was closed
- bool closed;
+ volatile bool closed;
public:
@@ -78,6 +78,11 @@
virtual ~FilterOutputStream() {
try {
this->close();
+
+ if( own ) {
+ delete outputStream;
+ }
+ outputStream = NULL;
}
DECAF_CATCH_NOTHROW( IOException )
DECAF_CATCHALL_NOTHROW( )
@@ -195,13 +200,9 @@
*/
virtual void close() throw ( lang::Exception ) {
try {
- if( outputStream != NULL ) {
+ if( !closed && outputStream != NULL ) {
outputStream->flush();
outputStream->close();
- if( own ) {
- delete outputStream;
- }
- outputStream = NULL;
}
this->closed = true;
}