[buddy] backport some fixes from upstream
* src/fdd.c, src/imatrix.c, src/kernel.c, src/reorder.c: Here.
This commit is contained in:
parent
2d13fd50ab
commit
1ffdd57383
4 changed files with 25 additions and 16 deletions
|
|
@ -143,9 +143,10 @@ int fdd_extdomain(int *dom, int num)
|
||||||
{
|
{
|
||||||
fdvaralloc += (num > fdvaralloc) ? num : fdvaralloc;
|
fdvaralloc += (num > fdvaralloc) ? num : fdvaralloc;
|
||||||
|
|
||||||
domain = (Domain*)realloc(domain, sizeof(Domain)*fdvaralloc);
|
Domain* tmp_ptr = (Domain*)realloc(domain, sizeof(Domain)*fdvaralloc);
|
||||||
if (domain == NULL)
|
if (tmp_ptr == NULL)
|
||||||
return bdd_error(BDD_MEMORY);
|
return bdd_error(BDD_MEMORY);
|
||||||
|
domain = tmp_ptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,9 +220,10 @@ int fdd_overlapdomain(int v1, int v2)
|
||||||
{
|
{
|
||||||
fdvaralloc += fdvaralloc;
|
fdvaralloc += fdvaralloc;
|
||||||
|
|
||||||
domain = (Domain*)realloc(domain, sizeof(Domain)*fdvaralloc);
|
Domain* tmp_ptr = (Domain*)realloc(domain, sizeof(Domain)*fdvaralloc);
|
||||||
if (domain == NULL)
|
if (tmp_ptr == NULL)
|
||||||
return bdd_error(BDD_MEMORY);
|
return bdd_error(BDD_MEMORY);
|
||||||
|
domain = tmp_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
d = &domain[fdvarnum];
|
d = &domain[fdvarnum];
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ imatrix* imatrixNew(int size)
|
||||||
{
|
{
|
||||||
for (m=0 ; m<n ; m++)
|
for (m=0 ; m<n ; m++)
|
||||||
free(mtx->rows[m]);
|
free(mtx->rows[m]);
|
||||||
|
free(mtx->rows);
|
||||||
free(mtx);
|
free(mtx);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*========================================================================
|
/*========================================================================
|
||||||
Copyright (C) 1996-2002 by Jorn Lind-Nielsen
|
Copyright (C) 1996-2002, 2015 by Jorn Lind-Nielsen
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
Permission is hereby granted, without written agreement and without
|
Permission is hereby granted, without written agreement and without
|
||||||
|
|
@ -334,22 +334,25 @@ int bdd_setvarnum(int num)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (__unlikely((bddvarset =
|
BDD* tmp_ptr = (BDD*)realloc(bddvarset,sizeof(BDD)*num*2);
|
||||||
(BDD*)realloc(bddvarset,sizeof(BDD)*num*2)) == NULL))
|
if (__unlikely(tmp_ptr == NULL))
|
||||||
return bdd_error(BDD_MEMORY);
|
return bdd_error(BDD_MEMORY);
|
||||||
if (__unlikely((bddlevel2var =
|
bddvarset = tmp_ptr;
|
||||||
(int*)realloc(bddlevel2var,sizeof(int)*(num+1))) == NULL))
|
int* tmp_ptr2 = (int*)realloc(bddlevel2var,sizeof(int)*(num+1));
|
||||||
|
if (__unlikely(tmp_ptr2 == NULL))
|
||||||
{
|
{
|
||||||
free(bddvarset);
|
free(bddvarset);
|
||||||
return bdd_error(BDD_MEMORY);
|
return bdd_error(BDD_MEMORY);
|
||||||
}
|
}
|
||||||
if (__unlikely((bddvar2level =
|
bddlevel2var = tmp_ptr2;
|
||||||
(int*)realloc(bddvar2level,sizeof(int)*(num+1))) == NULL))
|
tmp_ptr2 = (int*)realloc(bddvar2level,sizeof(int)*(num+1));
|
||||||
|
if (__unlikely(tmp_ptr2 == NULL))
|
||||||
{
|
{
|
||||||
free(bddvarset);
|
free(bddvarset);
|
||||||
free(bddlevel2var);
|
free(bddlevel2var);
|
||||||
return bdd_error(BDD_MEMORY);
|
return bdd_error(BDD_MEMORY);
|
||||||
}
|
}
|
||||||
|
bddvar2level = tmp_ptr2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__likely(bddrefstack != NULL))
|
if (__likely(bddrefstack != NULL))
|
||||||
|
|
|
||||||
|
|
@ -812,7 +812,7 @@ static void addref_rec(int r, char *dep)
|
||||||
if (r < 2)
|
if (r < 2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (bddnodes[r].refcou == 0)
|
if (bddnodes[r].refcou == 0 || MARKED(r))
|
||||||
{
|
{
|
||||||
bddfreenum--;
|
bddfreenum--;
|
||||||
|
|
||||||
|
|
@ -880,7 +880,10 @@ static int mark_roots(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((extroots=(int*)(malloc(sizeof(int)*extrootsize))) == NULL)
|
if ((extroots=(int*)(malloc(sizeof(int)*extrootsize))) == NULL)
|
||||||
return bdd_error(BDD_MEMORY);
|
{
|
||||||
|
free(dep);
|
||||||
|
return bdd_error(BDD_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
iactmtx = imatrixNew(bddvarnum);
|
iactmtx = imatrixNew(bddvarnum);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue