]> SALOME platform Git repositories - modules/superv.git/commitdiff
Salome HOME
Fix for PAL13437 : Unstable work of the "PrintPorts()" method.
authormkr <mkr@opencascade.com>
Fri, 26 Jan 2007 10:27:58 +0000 (10:27 +0000)
committermkr <mkr@opencascade.com>
Fri, 26 Jan 2007 10:27:58 +0000 (10:27 +0000)
src/Supervision/Value_Impl.cxx

index 162c93289d2cd8d9f511406926713ab5e44c3381..4e7675e0289ada90a3a246251e8f9b6c804b91c5 100644 (file)
@@ -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() {