summaryrefslogtreecommitdiffstats
path: root/src/misc
diff options
context:
space:
mode:
Diffstat (limited to 'src/misc')
-rw-r--r--src/misc/vec/vecInt.h6
-rw-r--r--src/misc/vec/vecWec.h8
2 files changed, 11 insertions, 3 deletions
diff --git a/src/misc/vec/vecInt.h b/src/misc/vec/vecInt.h
index a99e6f29..c821d121 100644
--- a/src/misc/vec/vecInt.h
+++ b/src/misc/vec/vecInt.h
@@ -255,6 +255,12 @@ static inline Vec_Int_t * Vec_IntDupArray( Vec_Int_t * pVec )
SeeAlso []
***********************************************************************/
+static inline void Vec_IntZero( Vec_Int_t * p )
+{
+ p->pArray = NULL;
+ p->nSize = 0;
+ p->nCap = 0;
+}
static inline void Vec_IntErase( Vec_Int_t * p )
{
ABC_FREE( p->pArray );
diff --git a/src/misc/vec/vecWec.h b/src/misc/vec/vecWec.h
index 8a924f90..ece7b0a1 100644
--- a/src/misc/vec/vecWec.h
+++ b/src/misc/vec/vecWec.h
@@ -245,6 +245,7 @@ static inline void Vec_WecClear( Vec_Wec_t * p )
int i;
Vec_WecForEachLevel( p, vVec, i )
Vec_IntClear( vVec );
+ p->nSize = 0;
}
/**Function*************************************************************
@@ -315,10 +316,9 @@ static inline double Vec_WecMemory( Vec_Wec_t * p )
***********************************************************************/
static inline void Vec_WecFree( Vec_Wec_t * p )
{
- Vec_Int_t * vVec;
int i;
- Vec_WecForEachLevel( p, vVec, i )
- ABC_FREE( vVec->pArray );
+ for ( i = 0; i < p->nCap; i++ )
+ ABC_FREE( p->pArray[i].pArray );
ABC_FREE( p->pArray );
ABC_FREE( p );
}
@@ -643,6 +643,8 @@ static inline void Vec_WecRemoveEmpty( Vec_Wec_t * vCubes )
vCubes->pArray[k++] = *vCube;
else
ABC_FREE( vCube->pArray );
+ for ( i = k; i < Vec_WecSize(vCubes); i++ )
+ Vec_IntZero( Vec_WecEntry(vCubes, i) );
Vec_WecShrink( vCubes, k );
// Vec_WecSortByFirstInt( vCubes, 0 );
}