1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-25 00:07:09 -07:00

Test cases for errors in finalization.

Copied from Perforce
 Change: 194166
This commit is contained in:
Gareth Rees 2018-06-26 09:01:46 +01:00
parent b873c82d99
commit af4dceecd9
4 changed files with 105 additions and 2 deletions

View file

@ -1,7 +1,7 @@
/* finalcv.c: FINALIZATION COVERAGE TEST
*
* $Id$
* Copyright (c) 2001-2016 Ravenbrook Limited. See end of file for license.
* Copyright (c) 2001-2018 Ravenbrook Limited. See end of file for license.
* Portions copyright (C) 2002 Global Graphics Software.
*
* DESIGN
@ -143,6 +143,10 @@ static void test(mps_arena_t arena, mps_pool_class_t pool_class)
/* store index in vector's slot */
((mps_word_t *)p)[vectorSLOT] = dylan_int(i);
/* mps_definalize fails when there have been no calls to mps_finalize
yet, or for an address that was not registered for finalization. */
Insist(mps_definalize(arena, &p) == MPS_RES_FAIL);
die(mps_finalize(arena, &p), "finalize\n");
root[i] = p; state[i] = rootSTATE;
}
@ -246,7 +250,7 @@ int main(int argc, char *argv[])
/* C. COPYRIGHT AND LICENSE
*
* Copyright (c) 2001-2016 Ravenbrook Limited <http://www.ravenbrook.com/>.
* Copyright (c) 2001-2018 Ravenbrook Limited <http://www.ravenbrook.com/>.
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*

31
mps/test/argerr/155.c Normal file
View file

@ -0,0 +1,31 @@
/*
TEST_HEADER
id = $Id: //info.ravenbrook.com/project/mps/master/test/argerr/99.c#4 $
summary = finalize address not managed by the arena
language = c
link = testlib.o
OUTPUT_SPEC
assert = true
assertfile P= global.c
assertcond = PoolOfAddr(&refpool, arena, (Addr)obj)
END_HEADER
*/
#include "testlib.h"
#include "mps.h"
static void test(void)
{
void *p = &p;
mps_arena_t arena;
cdie(mps_arena_create_k(&arena, mps_arena_class_vm(), mps_args_none),
"create arena");
mps_finalize(arena, &p);
mps_arena_destroy(arena);
}
int main(void)
{
easy_tramp(test);
return 0;
}

31
mps/test/argerr/156.c Normal file
View file

@ -0,0 +1,31 @@
/*
TEST_HEADER
id = $Id: //info.ravenbrook.com/project/mps/master/test/argerr/99.c#4 $
summary = definalize address not managed by the arena
language = c
link = testlib.o
OUTPUT_SPEC
assert = true
assertfile P= global.c
assertcond = ArenaHasAddr(arena, (Addr)obj)
END_HEADER
*/
#include "testlib.h"
#include "mps.h"
static void test(void)
{
void *p = &p;
mps_arena_t arena;
cdie(mps_arena_create_k(&arena, mps_arena_class_vm(), mps_args_none),
"create arena");
mps_definalize(arena, &p);
mps_arena_destroy(arena);
}
int main(void)
{
easy_tramp(test);
return 0;
}

37
mps/test/argerr/157.c Normal file
View file

@ -0,0 +1,37 @@
/*
TEST_HEADER
id = $Id: //info.ravenbrook.com/project/mps/master/test/argerr/99.c#4 $
summary = finalize address in manually managed pool
language = c
link = testlib.o
OUTPUT_SPEC
assert = true
assertfile P= global.c
assertcond = PoolHasAttr(refpool, AttrGC)
END_HEADER
*/
#include "testlib.h"
#include "mps.h"
#include "mpscmvff.h"
static void test(void)
{
void *p;
mps_arena_t arena;
mps_pool_t pool;
cdie(mps_arena_create_k(&arena, mps_arena_class_vm(), mps_args_none),
"create arena");
cdie(mps_pool_create_k(&pool, arena, mps_class_mvff(), mps_args_none),
"create pool");
cdie(mps_alloc(&p, pool, 16), "alloc");
mps_finalize(arena, &p);
mps_pool_destroy(pool);
mps_arena_destroy(arena);
}
int main(void)
{
easy_tramp(test);
return 0;
}