[ROOT] patch to fix auto_ptr in ROOT 2.24.05 and earlier

From: Matthew D. Langston (langston@SLAC.stanford.edu)
Date: Tue May 23 2000 - 21:37:03 MEST


Here is a patch which will fix the missing "reset" method in the
standard C++ auto_ptr class template.  To apply the patch, feed this
e-mail to the patch program after you cd to $ROOTSYS/cint.  For example:

  $ cd $ROOTSYS/cint
  $ patch -p1 -b < ../memory_auto_ptr.patch 

Regards, Matt

Sean> I noticed that there was no way to reset an auto_ptr which is
Sean> required in the C++ standard. Would it be possible to add this
Sean> essential method in the next release of Root? That would be very
Sean> nice. Thanks -- Sean

Masa> I try to implement it in next release cint5.14.40.
Masa> 
Masa> Meanwhile, you can modify cint/stl/_memory and
Masa> cint/lib/prec_stl/memory by yourself.

--
Matthew D. Langston
SLD, Stanford Linear Accelerator Center
langston@SLAC.Stanford.EDU

diff -uNr cint.orig/lib/prec_stl/memory cint/lib/prec_stl/memory
--- cint.orig/lib/prec_stl/memory	Fri May  5 04:07:41 2000
+++ cint/lib/prec_stl/memory	Tue May 23 12:20:02 2000
@@ -165,6 +165,12 @@
   X* get() const { return ptr; }
   X* release() const { owns = false; return ptr; }
 
+  void reset( X* __p = 0 )
+  {
+     delete ptr;
+     ptr = __p;
+  }
+
   // auto_ptr conversions
   //auto_ptr(auto_ptr_ref<X>& x) { }
   //template<class Y> operator auto_ptr_ref<Y>() { return auto_ptr_ref<Y>(); }
diff -uNr cint.orig/stl/_memory cint/stl/_memory
--- cint.orig/stl/_memory	Fri May  5 04:07:41 2000
+++ cint/stl/_memory	Tue May 23 12:20:17 2000
@@ -64,6 +64,12 @@
   X* get() const { return ptr; }
   X* release() const { owns = false; return ptr; }
 
+  void reset( X* __p = 0 )
+  {
+     delete ptr;
+     ptr = __p;
+  }
+
   // auto_ptr conversions
   //auto_ptr(auto_ptr_ref<X>& x) { }
   //template<class Y> operator auto_ptr_ref<Y>() { return auto_ptr_ref<Y>(); }



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:25 MET