Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/superv.git] / src / Supervision / Value_Impl.cxx
index 54be21582134de9c7b6dfdff949b720b1df74fa3..4e7675e0289ada90a3a246251e8f9b6c804b91c5 100644 (file)
@@ -265,30 +265,33 @@ 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 ;
     }
     case CORBA::tk_long: {
-      long l;
+      CORBA::Long l;
       anAny >>= l;
       astr << l << ends ;
-      retstr = astr.str().c_str() ;
-//      MESSAGE( "ToString( long ) '" << l << " " << retstr << "'" );
+      RetStr = astr.str() ;
+//      MESSAGE( "ToString( CORBA::Long ) '" << l << " " << retstr << "'" );
       break ;
     }
     case CORBA::tk_double: {
       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() {