1/* { dg-do run } */ 2 3extern "C" void abort (void); 4class XalanDOMString 5{ 6public: 7 int y; 8}; 9 10class XObject 11{ 12public: 13 const XalanDOMString& str() const { return x; } 14 XalanDOMString x; 15}; 16 17class XObjectPtr 18{ 19public: 20 XObjectPtr(const XObjectPtr& theSource) 21 { 22 m_xobjectPtr = theSource.m_xobjectPtr; 23 } 24 const XObject* operator->() const 25 { 26 return m_xobjectPtr; 27 }; 28 XObjectPtr(XObject *p) { m_xobjectPtr = p; } 29 XObject* m_xobjectPtr; 30}; 31 32class FunctionSubstringBefore 33{ 34public: 35 int execute( const XObjectPtr arg1) const 36 { 37 const XalanDOMString& theFirstString = arg1->str(); 38 return theFirstString.y; 39 } 40}; 41 42int 43main () 44{ 45 XObject x; 46 XObjectPtr y (&x); 47 x.x.y = -1; 48 FunctionSubstringBefore z; 49 if (z.execute (y) != -1) 50 abort (); 51 return 0; 52} 53