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]

Reply via email to