From 67413a9edc079178085070bd80bf6e7120b734a2 Mon Sep 17 00:00:00 2001 From: mkr Date: Fri, 26 Jan 2007 10:27:58 +0000 Subject: [PATCH] Fix for PAL13437 : Unstable work of the "PrintPorts()" method. --- src/Supervision/Value_Impl.cxx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Supervision/Value_Impl.cxx b/src/Supervision/Value_Impl.cxx index 162c932..4e7675e 100644 --- a/src/Supervision/Value_Impl.cxx +++ b/src/Supervision/Value_Impl.cxx @@ -265,10 +265,12 @@ char * Value_Impl::ToString() { } ostringstream astr ; const char * retstr ; + string RetStr; int startstr = 0 ; switch (anAny.type()->kind()) { case CORBA::tk_string: { anAny >>= retstr; + RetStr = string(retstr); // MESSAGE( "ToString( string ) '" << retstr << "'" ); break ; } @@ -276,7 +278,7 @@ char * Value_Impl::ToString() { CORBA::Long l; anAny >>= l; astr << l << ends ; - retstr = astr.str().c_str() ; + RetStr = astr.str() ; // MESSAGE( "ToString( CORBA::Long ) '" << l << " " << retstr << "'" ); break ; } @@ -284,11 +286,12 @@ char * Value_Impl::ToString() { double d; anAny >>= d; astr << setw(25) << setprecision(18) << d << ends ; - retstr = astr.str().c_str() ; + RetStr = astr.str(); int i = 0 ; - while ( i < (int ) strlen( retstr ) && retstr[ i++ ] == ' ' ) { + while ( i < (int ) RetStr.length() && RetStr.at(i++) == ' ' ) { startstr = i ; } + RetStr = RetStr.substr(startstr) ; // MESSAGE( "ToString( double ) '" << d << "' '" << retstr << "' '" << &retstr[ startstr ] << "'"); break ; } @@ -300,22 +303,22 @@ char * Value_Impl::ToString() { #else anAny >>= obj ; #endif - retstr = _Orb->object_to_string( obj ); + RetStr = _Orb->object_to_string( obj ); // MESSAGE( "ToString( object ) '" << retstr << "'" ); } catch ( ... ) { - retstr = "object_to_string catched " ; + RetStr = "object_to_string catched " ; } break ; } default: { - retstr = "Unknown CORBA::Any Type" ; + RetStr = "Unknown CORBA::Any Type" ; // MESSAGE( retstr ); break ; } } // endService( "Value_Impl::ToString" ); - return CORBA::string_dup( &retstr[ startstr ] ) ; + return CORBA::string_dup( RetStr.c_str() ) ; } bool Value_Impl::IsIOR() { -- 2.39.2