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:
parent
b873c82d99
commit
af4dceecd9
4 changed files with 105 additions and 2 deletions
|
|
@ -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
31
mps/test/argerr/155.c
Normal 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
31
mps/test/argerr/156.c
Normal 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
37
mps/test/argerr/157.c
Normal 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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue