Skip to content

Commit 9facabc

Browse files
author
Remi Delmas
committed
Mark dummy objects as deallocated
1 parent 2d8ab18 commit 9facabc

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/ansi-c/library/cprover_contracts.c

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1207,14 +1207,17 @@ __CPROVER_HIDE:;
12071207
if(__VERIFIER_nondet___CPROVER_bool())
12081208
{
12091209
// in the failure case, make pointer null or pointing to a unique
1210-
// dummy object of size 0.
1210+
// dummy deallocated object of size 0.
12111211
if(__VERIFIER_nondet___CPROVER_bool())
12121212
{
12131213
*elem = (void *)0;
12141214
}
12151215
else
12161216
{
1217-
*elem = __CPROVER_allocate(0, 0);
1217+
void *dummy = __CPROVER_allocate(0, 0);
1218+
__CPROVER_deallocated =
1219+
__VERIFIER_nondet___CPROVER_bool() ? dummy : __CPROVER_deallocated;
1220+
*elem = dummy;
12181221
}
12191222
return 0;
12201223
}
@@ -1274,14 +1277,17 @@ __CPROVER_HIDE:;
12741277
if(__VERIFIER_nondet___CPROVER_bool())
12751278
{
12761279
// in the failure case, make pointer null or pointing to a unique
1277-
// dummy object of size 0.
1280+
// dummy deallocated object of size 0.
12781281
if(__VERIFIER_nondet___CPROVER_bool())
12791282
{
12801283
*elem = (void *)0;
12811284
}
12821285
else
12831286
{
1284-
*elem = __CPROVER_allocate(0, 0);
1287+
void *dummy = __CPROVER_allocate(0, 0);
1288+
__CPROVER_deallocated =
1289+
__VERIFIER_nondet___CPROVER_bool() ? dummy : __CPROVER_deallocated;
1290+
*elem = dummy;
12851291
}
12861292
return 0;
12871293
}
@@ -1387,14 +1393,17 @@ __CPROVER_HIDE:;
13871393
if(__VERIFIER_nondet___CPROVER_bool())
13881394
{
13891395
// in the failure case, make pointer null or pointing to a unique
1390-
// dummy object of size 0.
1396+
// dummy deallocated object of size 0.
13911397
if(__VERIFIER_nondet___CPROVER_bool())
13921398
{
13931399
*ptr = (void *)0;
13941400
}
13951401
else
13961402
{
1397-
*ptr = __CPROVER_allocate(0, 0);
1403+
void *dummy = __CPROVER_allocate(0, 0);
1404+
__CPROVER_deallocated =
1405+
__VERIFIER_nondet___CPROVER_bool() ? dummy : __CPROVER_deallocated;
1406+
*ptr = dummy;
13981407
}
13991408
return 0;
14001409
}

0 commit comments

Comments
 (0)