Hello all.
After working with axiscpp 1.6 beta I have several suggestions:
1. Client stubs allow client code copy and assign proxy objects.
IMHO it is bad since axiscpp::Stub do not use any pointer share
mechanism so double deallocation can occur.
so add this code in Stub.hpp
class STORAGE_CLASS_INFO Stub
{
private:
/**
* Copy constructor and assignment Prohibited!
*/
Stub(const Stub& src) {}
Stub& operator=(const Stub& src) {return *this;}
public:
// Rest of code
2. We have deallocation problem with xsd__...array * types returned
from axis engine under VC 8.0. Since our client and axis uses different
runtime libraries.
My proposal:
make all complex types allocated and returned by axis engine with own
memory allocation/deallocation operators.
////////////////////////////////////////////////////////
// AxisUserApi.hpp
/**
* @class xsd__base
* Axis C++ base type for xml types
* defines own allocation deallocation mechanism
*/
class STORAGE_CLASS_INFO xsd__base {
public:
/**
* Default constructor
*/
xsd__base();
virtual ~xsd__base();
/**
* Allocation
*/
void* operator new(size_t size);
/**
* Array Allocation
*/
void* operator new[](std::size_t _Count);
/**
* Deallocation
*/
void operator delete(void* _Ptr);
/**
* Array deallocation
*/
void operator delete[](void* _Ptr);
};
and all complex types must be derive from this base.
class STORAGE_CLASS_INFO xsd__base64Binary : public xsd__base {
// rest of code...
So after such changes we can safely delete pointers returned from the
axis engine.
With best regards M. Ushakov.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]