src/fflib/lgfem.hpp:866: error: NULL_DEREFERENCE
pointer `Vh` last assigned on line 864 could be null and is dereferenced at line 866, column 38.
Showing all 112 steps of the trace
src/fflib/lgfem.hpp:853:9: start of procedure operator()
851. CODE(Expression aa0,Expression aa1,Expression aa2)
852. : a0(aa0),a1(aa1),a2(FF::Clone(aa2)) {ffassert(FF::Check(a2));}
853. AnyType operator()(Stack s) const
^
854. {
855.
src/fflib/lgfem.hpp:856:13: Skipping operator(): function or method not found
854. {
855.
856. AnyType aa0= (*a0)(s);
^
857. AnyType aa1= (*a1)(s);
858.
src/fflib/AnyType.hpp:83:7: start of procedure AnyTypeWithOutCheck
81. };
82.
83. class AnyTypeWithOutCheck {
^
84.
85. public:
src/fflib/AnyType.hpp:86:5: start of procedure
84.
85. public:
86. union {
^
87. AnyData data;
88. void * p;
src/fflib/AnyType.hpp:86:5: return from a call to AnyTypeWithOutCheck::anonymous_union_._AnyType.hpp:86:5_
84.
85. public:
86. union {
^
87. AnyData data;
88. void * p;
src/fflib/AnyType.hpp:83:7: return from a call to AnyTypeWithOutCheck_AnyTypeWithOutCheck
81. };
82.
83. class AnyTypeWithOutCheck {
^
84.
85. public:
src/fflib/lgfem.hpp:857:13: Skipping operator(): function or method not found
855.
856. AnyType aa0= (*a0)(s);
857. AnyType aa1= (*a1)(s);
^
858.
859. A pp = GetAny(aa0);
src/fflib/AnyType.hpp:83:7: start of procedure AnyTypeWithOutCheck
81. };
82.
83. class AnyTypeWithOutCheck {
^
84.
85. public:
src/fflib/AnyType.hpp:86:5: start of procedure
84.
85. public:
86. union {
^
87. AnyData data;
88. void * p;
src/fflib/AnyType.hpp:86:5: return from a call to AnyTypeWithOutCheck::anonymous_union_._AnyType.hpp:86:5_
84.
85. public:
86. union {
^
87. AnyData data;
88. void * p;
src/fflib/AnyType.hpp:83:7: return from a call to AnyTypeWithOutCheck_AnyTypeWithOutCheck
81. };
82.
83. class AnyTypeWithOutCheck {
^
84.
85. public:
src/fflib/lgfem.hpp:859:13:
857. AnyType aa1= (*a1)(s);
858.
859. > A pp = GetAny(aa0);
860. B a= GetAny(aa1);
861. *pp=new FEbase(a);
src/fflib/AnyType.hpp:190:23: start of procedure GetAny()
188.
189.
190. template inline const T& GetAny(const AnyTypeWithOutCheck & x)
^
191. {
192. CheckSize();
src/fflib/AnyType.hpp:192:2: Skipping CheckSize: function or method not found
190. template inline const T& GetAny(const AnyTypeWithOutCheck & x)
191. {
192. CheckSize();
^
193. return *static_cast(static_cast(&x));
194. }
src/fflib/AnyType.hpp:193:2:
191. {
192. CheckSize();
193. > return *static_cast(static_cast(&x));
194. }
195.
src/fflib/AnyType.hpp:194:1: return from a call to GetAny
192. CheckSize();
193. return *static_cast(static_cast(&x));
194. > }
195.
196. template<> inline const double& GetAny(const AnyTypeWithOutCheck & x)
src/fflib/lgfem.hpp:860:13:
858.
859. A pp = GetAny(aa0);
860. > B a= GetAny(aa1);
861. *pp=new FEbase(a);
862. KN *x = (**pp).x();
src/fflib/AnyType.hpp:190:23: start of procedure GetAny()
188.
189.
190. template inline const T& GetAny(const AnyTypeWithOutCheck & x)
^
191. {
192. CheckSize();
src/fflib/AnyType.hpp:192:2: Skipping CheckSize: function or method not found
190. template inline const T& GetAny(const AnyTypeWithOutCheck & x)
191. {
192. CheckSize();
^
193. return *static_cast(static_cast(&x));
194. }
src/fflib/AnyType.hpp:193:2:
191. {
192. CheckSize();
193. > return *static_cast(static_cast(&x));
194. }
195.
src/fflib/AnyType.hpp:194:1: return from a call to GetAny
192. CheckSize();
193. return *static_cast(static_cast(&x));
194. > }
195.
196. template<> inline const double& GetAny(const AnyTypeWithOutCheck & x)
src/fflib/lgfem.hpp:861:13:
859. A pp = GetAny(aa0);
860. B a= GetAny(aa1);
861. > *pp=new FEbase(a);
862. KN *x = (**pp).x();
863. if ( !x) { // defined
src/fflib/lgfem.hpp:358:3: start of procedure FEbase
356. KN *x() {return xx;}
357.
358. FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
^
359.
360. ~FEbase() { delete xx;}
src/fflib/lgfem.hpp:358:30:
356. KN *x() {return xx;}
357.
358. > FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
359.
360. ~FEbase() { delete xx;}
src/fflib/lgfem.hpp:358:41:
356. KN *x() {return xx;}
357.
358. > FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
359.
360. ~FEbase() { delete xx;}
src/fflib/lgfem.hpp:358:47:
356. KN *x() {return xx;}
357.
358. > FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
359.
360. ~FEbase() { delete xx;}
src/femlib/RefCounter.hpp:87:2: start of procedure CountPointer
85. public:
86. CountPointer() : c(0) {}
87. CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
^
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:67:
85. public:
86. CountPointer() : c(0) {}
87. > CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:45:7: start of procedure baseCountPointer
43. // ruse pour utiliser le prive c RefCounter de
44. // pas de syntaxe pour des friends template
45. class baseCountPointer { protected:
^
46. void add(const RefCounter * c) const;
47. void destroyPtr(const RefCounter * c) const;
src/femlib/RefCounter.hpp:45:7: return from a call to baseCountPointer_baseCountPointer
43. // ruse pour utiliser le prive c RefCounter de
44. // pas de syntaxe pour des friends template
45. class baseCountPointer { protected:
^
46. void add(const RefCounter * c) const;
47. void destroyPtr(const RefCounter * c) const;
src/femlib/RefCounter.hpp:87:43:
85. public:
86. CountPointer() : c(0) {}
87. > CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:54: Taking true branch
85. public:
86. CountPointer() : c(0) {}
87. CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
^
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:63:
85. public:
86. CountPointer() : c(0) {}
87. > CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:77:1: start of procedure add
75. };
76.
77. > inline void baseCountPointer::add(const RefCounter * c) const
78. { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
src/femlib/RefCounter.hpp:78:10: Taking false branch
76.
77. inline void baseCountPointer::add(const RefCounter * c) const
78. { if (c) c->count++;}
^
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
src/femlib/RefCounter.hpp:78:6:
76.
77. inline void baseCountPointer::add(const RefCounter * c) const
78. > { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
src/femlib/RefCounter.hpp:78:24: return from a call to baseCountPointer_add
76.
77. inline void baseCountPointer::add(const RefCounter * c) const
78. { if (c) c->count++;}
^
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
src/femlib/RefCounter.hpp:87:50:
85. public:
86. CountPointer() : c(0) {}
87. > CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:70: return from a call to CountPointer>_CountPointer
85. public:
86. CountPointer() : c(0) {}
87. CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
^
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/fflib/lgfem.hpp:358:54: return from a call to FEbase,v_fes3>_FEbase
356. KN *x() {return xx;}
357.
358. FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
^
359.
360. ~FEbase() { delete xx;}
src/fflib/lgfem.hpp:862:13:
860. B a= GetAny(aa1);
861. *pp=new FEbase(a);
862. > KN *x = (**pp).x();
863. if ( !x) { // defined
864. FESpace * Vh= (*pp)->newVh();
src/fflib/lgfem.hpp:356:3: start of procedure x
354. CountPointer Vh; // espace courant
355.
356. KN *x() {return xx;}
^
357.
358. FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
src/fflib/lgfem.hpp:356:15:
354. CountPointer Vh; // espace courant
355.
356. > KN *x() {return xx;}
357.
358. FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
src/fflib/lgfem.hpp:356:25: return from a call to FEbase,v_fes3>_x
354. CountPointer Vh; // espace courant
355.
356. KN *x() {return xx;}
^
357.
358. FEbase(const pfes *ppVh) :pVh(ppVh), xx(0),Vh(0) {}
src/fflib/lgfem.hpp:863:19: Taking true branch
861. *pp=new FEbase(a);
862. KN *x = (**pp).x();
863. if ( !x) { // defined
^
864. FESpace * Vh= (*pp)->newVh();
865. throwassert( Vh);
src/fflib/lgfem.hpp:864:17:
862. KN *x = (**pp).x();
863. if ( !x) { // defined
864. > FESpace * Vh= (*pp)->newVh();
865. throwassert( Vh);
866. **pp = x = new KN(Vh->NbOfDF);
src/fflib/lgfem.hpp:384:3: start of procedure newVh
382. }
383.
384. FESpace * newVh() {
^
385. throwassert(pVh );
386. const pfes pp= *pVh;
src/fflib/lgfem.hpp:386:5:
384. FESpace * newVh() {
385. throwassert(pVh );
386. > const pfes pp= *pVh;
387. // cout << pVh << " " << *pVh << endl;
388. return *pp;
src/fflib/lgfem.hpp:388:5:
386. const pfes pp= *pVh;
387. // cout << pVh << " " << *pVh << endl;
388. > return *pp;
389. }
390.
src/fflib/lgfem.hpp:211:3: start of procedure operator_Fem2D::GFESpace_*
209.
210.
211. operator FESpace3 * () {
^
212. throwassert( d==3);
213. if ( !pVh || *ppTh != &pVh->Th )
src/fflib/lgfem.hpp:213:11:
211. operator FESpace3 * () {
212. throwassert( d==3);
213. > if ( !pVh || *ppTh != &pVh->Th )
214. pVh=CountPointer(update(),true);
215. return pVh ;}
src/femlib/RefCounter.hpp:99:2: start of procedure operator!
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
99. bool operator!() const { return !c;}
^
100. void operator=(const CountPointer & n) {
101. if(*this != n) { destroyPtr(c);
src/femlib/RefCounter.hpp:99:35: Condition is true
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
99. bool operator!() const { return !c;}
^
100. void operator=(const CountPointer & n) {
101. if(*this != n) { destroyPtr(c);
src/femlib/RefCounter.hpp:99:34:
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
99. > bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
101. if(*this != n) { destroyPtr(c);
src/femlib/RefCounter.hpp:99:27:
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
99. > bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
101. if(*this != n) { destroyPtr(c);
src/femlib/RefCounter.hpp:99:37: return from a call to CountPointer>_operator!
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
99. bool operator!() const { return !c;}
^
100. void operator=(const CountPointer & n) {
101. if(*this != n) { destroyPtr(c);
src/fflib/lgfem.hpp:213:11: Taking false branch
211. operator FESpace3 * () {
212. throwassert( d==3);
213. if ( !pVh || *ppTh != &pVh->Th )
^
214. pVh=CountPointer(update(),true);
215. return pVh ;}
src/fflib/lgfem.hpp:213:19:
211. operator FESpace3 * () {
212. throwassert( d==3);
213. > if ( !pVh || *ppTh != &pVh->Th )
214. pVh=CountPointer(update(),true);
215. return pVh ;}
src/femlib/RefCounter.hpp:96:3: start of procedure operator->
94. operator T & () const {return *c;}
95. T& operator*() const {return *c;}
96. T* operator->() const {return c;}
^
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
src/femlib/RefCounter.hpp:96:26:
94. operator T & () const {return *c;}
95. T& operator*() const {return *c;}
96. > T* operator->() const {return c;}
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
src/femlib/RefCounter.hpp:96:35: return from a call to CountPointer>_operator->
94. operator T & () const {return *c;}
95. T& operator*() const {return *c;}
96. T* operator->() const {return c;}
^
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
src/fflib/lgfem.hpp:213:19: Taking true branch
211. operator FESpace3 * () {
212. throwassert( d==3);
213. if ( !pVh || *ppTh != &pVh->Th )
^
214. pVh=CountPointer(update(),true);
215. return pVh ;}
src/fflib/lgfem.hpp:214:7:
212. throwassert( d==3);
213. if ( !pVh || *ppTh != &pVh->Th )
214. > pVh=CountPointer(update(),true);
215. return pVh ;}
216. FESpace3 * update() ;
src/fflib/lgfem.hpp:558:1: start of procedure update
556.
557.
558. > inline FESpace3 * v_fes3::update() {
559. assert(d==3);
560. if(!*ppTh) return 0;
src/fflib/lgfem.hpp:560:7: Taking false branch
558. inline FESpace3 * v_fes3::update() {
559. assert(d==3);
560. if(!*ppTh) return 0;
^
561. if (nbcperiodic ) {
562. assert(periodic);
src/fflib/lgfem.hpp:561:7: Taking false branch
559. assert(d==3);
560. if(!*ppTh) return 0;
561. if (nbcperiodic ) {
^
562. assert(periodic);
563. //const Mesh3 &Th(**ppTh);
src/fflib/lgfem.hpp:571:8:
569. }
570. else
571. > return buildupdate();
572. }
573.
src/fflib/lgfem.hpp:228:3: start of procedure buildupdate
226. bool buildperiodic(Stack stack, KN & ndfe) ;
227. virtual FESpace3 * buildupdate( KN & ndfe) { return 0;}
228. virtual FESpace3 * buildupdate() {return 0;};
^
229.
230. };
src/fflib/lgfem.hpp:228:38:
226. bool buildperiodic(Stack stack, KN & ndfe) ;
227. virtual FESpace3 * buildupdate( KN & ndfe) { return 0;}
228. > virtual FESpace3 * buildupdate() {return 0;};
229.
230. };
src/fflib/lgfem.hpp:228:47: return from a call to v_fes3_buildupdate
226. bool buildperiodic(Stack stack, KN & ndfe) ;
227. virtual FESpace3 * buildupdate( KN & ndfe) { return 0;}
228. virtual FESpace3 * buildupdate() {return 0;};
^
229.
230. };
src/fflib/lgfem.hpp:572:1: return from a call to v_fes3_update
570. else
571. return buildupdate();
572. > }
573.
574. template A Build(B b) { return A(b);}
src/femlib/RefCounter.hpp:87:2: start of procedure CountPointer
85. public:
86. CountPointer() : c(0) {}
87. CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
^
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:67:
85. public:
86. CountPointer() : c(0) {}
87. > CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:45:7: start of procedure baseCountPointer
43. // ruse pour utiliser le prive c RefCounter de
44. // pas de syntaxe pour des friends template
45. class baseCountPointer { protected:
^
46. void add(const RefCounter * c) const;
47. void destroyPtr(const RefCounter * c) const;
src/femlib/RefCounter.hpp:45:7: return from a call to baseCountPointer_baseCountPointer
43. // ruse pour utiliser le prive c RefCounter de
44. // pas de syntaxe pour des friends template
45. class baseCountPointer { protected:
^
46. void add(const RefCounter * c) const;
47. void destroyPtr(const RefCounter * c) const;
src/femlib/RefCounter.hpp:87:43:
85. public:
86. CountPointer() : c(0) {}
87. > CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:54: Taking false branch
85. public:
86. CountPointer() : c(0) {}
87. CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
^
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:50:
85. public:
86. CountPointer() : c(0) {}
87. > CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:87:70: return from a call to CountPointer>_CountPointer
85. public:
86. CountPointer() : c(0) {}
87. CountPointer( T * a,bool mmaster=false) :c(a) { if(!mmaster) add(c);}
^
88. CountPointer( T & a) :c(&a) { add(c);}
89. CountPointer(const CountPointer & a) :c(a.c) { add(c);}
src/femlib/RefCounter.hpp:100:2: start of procedure operator=
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
^
101. if(*this != n) { destroyPtr(c);
102. c=n.c;
src/femlib/RefCounter.hpp:101:6:
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
101. > if(*this != n) { destroyPtr(c);
102. c=n.c;
103. add(c);
src/femlib/RefCounter.hpp:98:2: start of procedure operator!=
96. T* operator->() const {return c;}
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
^
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
src/femlib/RefCounter.hpp:98:58: Condition is true
96. T* operator->() const {return c;}
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
^
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
src/femlib/RefCounter.hpp:98:50:
96. T* operator->() const {return c;}
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. > bool operator!=(const CountPointer & n) const {return n.c !=c;}
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
src/femlib/RefCounter.hpp:98:66: return from a call to CountPointer>_operator!=
96. T* operator->() const {return c;}
97. bool operator==(const CountPointer & n) const {return n.c ==c;}
98. bool operator!=(const CountPointer & n) const {return n.c !=c;}
^
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
src/femlib/RefCounter.hpp:101:6: Taking true branch
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
101. if(*this != n) { destroyPtr(c);
^
102. c=n.c;
103. add(c);
src/femlib/RefCounter.hpp:101:20:
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
101. > if(*this != n) { destroyPtr(c);
102. c=n.c;
103. add(c);
src/femlib/RefCounter.hpp:79:1: start of procedure destroyPtr
77. inline void baseCountPointer::add(const RefCounter * c) const
78. { if (c) c->count++;}
79. > inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
81.
src/femlib/RefCounter.hpp:80:10: Taking true branch
78. { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
^
81.
82. template
src/femlib/RefCounter.hpp:80:13:
78. { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. > { if (c) c->destroy();}
81.
82. template
src/femlib/RefCounter.hpp:58:3: start of procedure destroy
56. RefCounter() : count(0) {}
57. public:
58. int destroy() const {
^
59. if(this!=tnull) {throwassert(count>=0);
60. if ( count--==0) {
src/femlib/RefCounter.hpp:59:10: Taking true branch
57. public:
58. int destroy() const {
59. if(this!=tnull) {throwassert(count>=0);
^
60. if ( count--==0) {
61. SHOWVERB( cout << "True destruction of " << this << endl);
src/femlib/RefCounter.hpp:60:14: Taking false branch
58. int destroy() const {
59. if(this!=tnull) {throwassert(count>=0);
60. if ( count--==0) {
^
61. SHOWVERB( cout << "True destruction of " << this << endl);
62. delete this;
src/femlib/RefCounter.hpp:65:15:
63. return true;}
64. else{ SHOWVERB(cout << " no destruction count=" << count+1 << " " << this << endl);
65. > return false;}}
66. else return false;}
67. void increment() const {count++;SHOWVERB( cout << "increment of " << this << " "<< count << endl);}
src/femlib/RefCounter.hpp:66:22: return from a call to RefCounter_destroy
64. else{ SHOWVERB(cout << " no destruction count=" << count+1 << " " << this << endl);
65. return false;}}
66. else return false;}
^
67. void increment() const {count++;SHOWVERB( cout << "increment of " << this << " "<< count << endl);}
68. void decrement() const {destroy();}// count--;SHOWVERB( cout << "decrement of " << this << " "<< count << endl);ffassert(count>=0);}
src/femlib/RefCounter.hpp:80:6:
78. { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. > { if (c) c->destroy();}
81.
82. template
src/femlib/RefCounter.hpp:80:26: return from a call to baseCountPointer_destroyPtr
78. { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
^
81.
82. template
src/femlib/RefCounter.hpp:102:17:
100. void operator=(const CountPointer & n) {
101. if(*this != n) { destroyPtr(c);
102. > c=n.c;
103. add(c);
104. }}
src/femlib/RefCounter.hpp:103:17:
101. if(*this != n) { destroyPtr(c);
102. c=n.c;
103. > add(c);
104. }}
105.
src/femlib/RefCounter.hpp:77:1: start of procedure add
75. };
76.
77. > inline void baseCountPointer::add(const RefCounter * c) const
78. { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
src/femlib/RefCounter.hpp:78:10: Taking false branch
76.
77. inline void baseCountPointer::add(const RefCounter * c) const
78. { if (c) c->count++;}
^
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
src/femlib/RefCounter.hpp:78:6:
76.
77. inline void baseCountPointer::add(const RefCounter * c) const
78. > { if (c) c->count++;}
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
src/femlib/RefCounter.hpp:78:24: return from a call to baseCountPointer_add
76.
77. inline void baseCountPointer::add(const RefCounter * c) const
78. { if (c) c->count++;}
^
79. inline void baseCountPointer::destroyPtr(const RefCounter * c) const
80. { if (c) c->destroy();}
src/femlib/RefCounter.hpp:101:3:
99. bool operator!() const { return !c;}
100. void operator=(const CountPointer & n) {
101. > if(*this != n) { destroyPtr(c);
102. c=n.c;
103. add(c);
src/femlib/RefCounter.hpp:104:16: return from a call to CountPointer>_operator=
102. c=n.c;
103. add(c);
104. }}
^
105.
106. void operator=( T * t) {
src/fflib/lgfem.hpp:215:5:
213. if ( !pVh || *ppTh != &pVh->Th )
214. pVh=CountPointer(update(),true);
215. > return pVh ;}
216. FESpace3 * update() ;
217.
src/femlib/RefCounter.hpp:93:2: start of procedure operator_Fem2D::GFESpace_*
91. //void destroy() const { destroyPtr(c);}
92. void destroy() { destroyPtr(c);c=0;}
93. operator T * () const { return c;}
^
94. operator T & () const {return *c;}
95. T& operator*() const {return *c;}
src/femlib/RefCounter.hpp:93:29:
91. //void destroy() const { destroyPtr(c);}
92. void destroy() { destroyPtr(c);c=0;}
93. > operator T * () const { return c;}
94. operator T & () const {return *c;}
95. T& operator*() const {return *c;}
src/femlib/RefCounter.hpp:93:38: return from a call to CountPointer>_operator_Fem2D::GFESpace_*
91. //void destroy() const { destroyPtr(c);}
92. void destroy() { destroyPtr(c);c=0;}
93. operator T * () const { return c;}
^
94. operator T & () const {return *c;}
95. T& operator*() const {return *c;}
src/fflib/lgfem.hpp:215:20: return from a call to v_fes3_operator_Fem2D::GFESpace_*
213. if ( !pVh || *ppTh != &pVh->Th )
214. pVh=CountPointer(update(),true);
215. return pVh ;}
^
216. FESpace3 * update() ;
217.
src/fflib/lgfem.hpp:389:3: return from a call to FEbase,v_fes3>_newVh
387. // cout << pVh << " " << *pVh << endl;
388. return *pp;
389. }
^
390.
391. operator FESpace &() { throwassert(Vh); return *Vh;}
src/fflib/lgfem.hpp:866:17:
864. FESpace * Vh= (*pp)->newVh();
865. throwassert( Vh);
866. > **pp = x = new KN(Vh->NbOfDF);
867. *x=K();
868. }