]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Fix crash on Copy-Paste operation in GEOM module
authorvsr <vsr@opencascade.com>
Thu, 16 Sep 2010 08:45:08 +0000 (08:45 +0000)
committervsr <vsr@opencascade.com>
Thu, 16 Sep 2010 08:45:08 +0000 (08:45 +0000)
src/GEOM_I/GEOM_Object_i.cc

index 6b9d7ea0054fa73014b036497f9d7a6cc58f06a0..0adae06321aa9c953f32c1684fd132f26dd41c10 100644 (file)
@@ -372,16 +372,13 @@ SALOMEDS::TMPFile* GEOM_Object_i::GetShapeStream()
   BRepTools::Write(aShape, streamShape);
   //Returns the number of bytes that have been stored in the stream's buffer.
   int size = streamShape.str().size();
-  char* buf = new char [size];
-  //Get pointer on internal character array in ostrstream
-  const char* valueOfStream = streamShape.str().c_str();
-  //Create copy of ostrstream content
-  memcpy(buf, valueOfStream, size);
-
-  CORBA::Octet* OctetBuf =  (CORBA::Octet*)buf;
+  //Allocate octect buffer of required size
+  CORBA::Octet* OctetBuf = SALOMEDS::TMPFile::allocbuf(size);
+  //Copy ostrstream content to the octect buffer
+  memcpy(OctetBuf, streamShape.str().c_str(), size);
+  //Create and return TMPFile
   SALOMEDS::TMPFile_var SeqFile = new SALOMEDS::TMPFile(size,size,OctetBuf,1);
   return SeqFile._retn();
-
 }