Index: /trunk/SophyaLib/BaseTools/ndatablock.cc
===================================================================
--- /trunk/SophyaLib/BaseTools/ndatablock.cc	(revision 284)
+++ /trunk/SophyaLib/BaseTools/ndatablock.cc	(revision 285)
@@ -82,4 +82,5 @@
 NDataBlock<T>::NDataBlock(const NDataBlock<T>& a,bool share)
 // Createur avec choix de partager ou non
+// Si "a" temporaire alors partage meme si share=false
 : mSz(0), mSRef(NULL), mIsTemp(false)
 {
@@ -119,5 +120,5 @@
 template <class T>
 void NDataBlock<T>::Alloc(size_t n,T* data,Bridge* br)
-// Allocation d'un NOUVEL espace de stoquage
+// Allocation d'un NOUVEL espace de stoquage de "n" donnees
 // Si data==NULL : allocation de l'espace memoire (vide)
 //    data!=NULL : partage des donnees avec l'adresse data
@@ -153,5 +154,6 @@
 mSRef = new NDREF;
 mSRef->nref = 1;
-if(data) mSRef->data = data; else mSRef->data = new T[n];
+if(data) mSRef->data = data;
+else {mSRef->data = new T[n]; memset(mSRef->data,0,n*sizeof(T));}
 mSRef->bridge = br;
 
@@ -180,5 +182,5 @@
 #endif
 
-if(!a.mSRef) {mSz=0; mSRef=NULL;} // cas ou "a" est cree par defaut
+if(a.mSz==0) throw(SzMismatchError("NDataBlock::Clone a.mSz==0\n"));
 else if(a.IsTemp()) Share(a);
 else {Alloc(a.mSz); memcpy(Data(),a.Data(),mSz*sizeof(T));}
@@ -231,4 +233,5 @@
 #endif
 
+  mSz = 0; mSRef=NULL;
   return;
 }
@@ -241,9 +244,8 @@
 
 // Si il y a un Bridge les donnees ne n'appartiennent pas, on detruit le Bridge
-if(mSRef->bridge) delete mSRef->bridge; 
-// sinon, les donnees ont ete allouees par nos soins, on libere l'espace memoire
-else delete [] mSRef->data; 
+// sinon, les donnees ont ete allouees par nos soins, on libere l'espace
+if(mSRef->bridge) delete mSRef->bridge; else delete [] mSRef->data;
 mSRef->bridge=NULL; mSRef->data=NULL;
-delete mSRef; mSRef=NULL;
+delete mSRef; mSRef=NULL; mSz = 0;
 }
 
@@ -253,9 +255,6 @@
 void NDataBlock<T>::Reset(T v)
 {
-if(mSRef==NULL) return;
-if(mSRef->data==NULL) return;
-if(mSz==0) return;
-T *p=Begin(), *pe=End();
-while(p<pe) *p++ = v;
+if(mSRef==NULL || mSRef->data==NULL || mSz==0) return;
+T *p=Begin(), *pe=End(); while(p<pe) *p++ = v;
 }
 
@@ -278,5 +277,5 @@
 if(n==0) throw(ParmError("NDataBlock::FillFrom  n<=0\n"));
 if(mSRef==NULL) Alloc(n); // cas du createur par default
-if(mSz<n) n= mSz;
+if(mSz<n) n = mSz;
 memcpy(Data(),data,n*sizeof(T));
 }
@@ -459,5 +458,4 @@
 }
 
-
 ////////////////////////////////////////////////////////////////
 //**** Surcharge de +,-,*,/ : NDataBlock = NDataBlock+<T>b;
@@ -528,5 +526,5 @@
 // Pour A+B
 {
-if(this->mSz!=b.mSz)
+if(mSz!=b.mSz)
   throw(SzMismatchError("NDataBlock operator C=A+B size mismatch/null\n"));
 NDataBlock<T> result; result.SetTemp(true);
@@ -545,5 +543,5 @@
 // Pour A*B
 {
-if(this->mSz!=b.mSz)
+if(mSz!=b.mSz)
   throw(SzMismatchError("NDataBlock operator C=A*B size mismatch/null\n"));
 NDataBlock<T> result; result.SetTemp(true);
@@ -562,5 +560,5 @@
 // Pour A-B
 {
-if(this->mSz!=b.mSz)
+if(mSz!=b.mSz)
   throw(SzMismatchError("NDataBlock operator C=A-B size mismatch/null\n"));
 NDataBlock<T> result; result.SetTemp(true);
@@ -568,5 +566,5 @@
   result.Share(b);
   T *p=result.Begin(), *pe=result.End();
-  T const *pa=this->Begin();
+  T const *pa=Begin();
   while(p<pe) {*p = *pa++  - *p; p++;}
 } else {
@@ -581,5 +579,5 @@
 // Pour A/B
 {
-if(this->mSz!=b.mSz)
+if(mSz!=b.mSz)
   throw(SzMismatchError("NDataBlock operator C=A/B size mismatch/null\n"));
 NDataBlock<T> result; result.SetTemp(true);
@@ -587,5 +585,5 @@
   result.Share(b);
   T *p=result.Begin(), *pe=result.End();
-  T const *pa=this->Begin();
+  T const *pa=Begin();
   while(p<pe) {*p = *pa++  / *p; p++;}
 } else {
Index: /trunk/SophyaLib/BaseTools/ndatablock.h
===================================================================
--- /trunk/SophyaLib/BaseTools/ndatablock.h	(revision 284)
+++ /trunk/SophyaLib/BaseTools/ndatablock.h	(revision 285)
@@ -42,5 +42,5 @@
   void Clone(const NDataBlock<T>& a);
   void Reset(T v=0);
-  void ReSize(size_t n,bool force_alloc=false);
+  void ReSize(size_t n,bool force_alloc=true);
   void FillFrom(size_t n,T* data);
   
@@ -96,5 +96,4 @@
 
 protected:
-
   typedef struct {size_t nref; T* data; Bridge* bridge; } NDREF;
 
@@ -103,7 +102,7 @@
   void Delete(void);
 
-  size_t   mSz;
-  NDREF*   mSRef;
-  mutable bool     mIsTemp;
+  size_t       mSz;
+  NDREF*       mSRef;
+  mutable bool mIsTemp;
 };
 
Index: /trunk/SophyaLib/BaseTools/peidainit.cc
===================================================================
--- /trunk/SophyaLib/BaseTools/peidainit.cc	(revision 284)
+++ /trunk/SophyaLib/BaseTools/peidainit.cc	(revision 285)
@@ -2,9 +2,9 @@
 #include <stdlib.h>
 #include <stdio.h>
+#include <complex>
 #include "pexceptions.h"
 #include "ppersist.h"
 #include "peidainit.h"
 #include "ndatablock.h"
-#include "complex"
 
 // ---  Classe d'initialisation de PEIDA++, (PPersistMgr en particulier)
