forked from Imagelibrary/rtems
libtests/gxx01: Avoid random memory read/write
This commit is contained in:
@@ -25,12 +25,8 @@ rtems_gxx_key_create(&key, key_dtor) - OK
|
|||||||
rtems_gxx_setspecific() - OK
|
rtems_gxx_setspecific() - OK
|
||||||
rtems_gxx_getspecific(key) already existing - OK
|
rtems_gxx_getspecific(key) already existing - OK
|
||||||
rtems_gxx_key_delete(key) - OK
|
rtems_gxx_key_delete(key) - OK
|
||||||
rtems_gxx_getspecific(key_for_testing) non-existent - OK
|
rtems_gxx_getspecific(key) non-existent - OK
|
||||||
rtems_gxx_key_delete(key_for_testing) - OK
|
rtems_gxx_key_delete(key) - OK
|
||||||
rtems_gxx_key_dtor(&key) - OK
|
rtems_gxx_key_dtor(&key_obj) - OK
|
||||||
|
|
||||||
rtems_gxx_mutex_init() until exhausted and panic
|
|
||||||
rtems_gxx_mutex_init() panic AFTER printing EOF message
|
|
||||||
rtems_gxx_mutex_init
|
|
||||||
*** END OF TEST GXX 01 ***
|
*** END OF TEST GXX 01 ***
|
||||||
fatal error, exiting
|
|
||||||
|
|||||||
@@ -116,7 +116,6 @@ void test_once(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
volatile bool key_dtor_ran;
|
volatile bool key_dtor_ran;
|
||||||
void *key_for_testing;
|
|
||||||
|
|
||||||
void key_dtor(void *ptr)
|
void key_dtor(void *ptr)
|
||||||
{
|
{
|
||||||
@@ -128,6 +127,7 @@ void test_key(void)
|
|||||||
int sc;
|
int sc;
|
||||||
__gthread_key_t key;
|
__gthread_key_t key;
|
||||||
void *p;
|
void *p;
|
||||||
|
__gthread_key key_obj;
|
||||||
|
|
||||||
puts( "rtems_gxx_key_create(&key, NULL) - OK" );
|
puts( "rtems_gxx_key_create(&key, NULL) - OK" );
|
||||||
sc = rtems_gxx_key_create(&key, NULL);
|
sc = rtems_gxx_key_create(&key, NULL);
|
||||||
@@ -154,25 +154,22 @@ void test_key(void)
|
|||||||
rtems_test_assert( sc == 0 );
|
rtems_test_assert( sc == 0 );
|
||||||
rtems_test_assert( key_dtor_ran == true );
|
rtems_test_assert( key_dtor_ran == true );
|
||||||
|
|
||||||
puts( "rtems_gxx_getspecific(key_for_testing) non-existent - OK" );
|
key = calloc( 1, sizeof( *key ) );
|
||||||
p = rtems_gxx_getspecific((__gthread_key_t) &key_for_testing);
|
rtems_test_assert( key != NULL );
|
||||||
|
|
||||||
|
puts( "rtems_gxx_getspecific(key) non-existent - OK" );
|
||||||
|
p = rtems_gxx_getspecific( key );
|
||||||
rtems_test_assert( p == NULL );
|
rtems_test_assert( p == NULL );
|
||||||
rtems_test_assert( key_for_testing == NULL );
|
|
||||||
|
|
||||||
key_for_testing = malloc(4);
|
puts( "rtems_gxx_key_delete(key) - OK" );
|
||||||
rtems_test_assert( key_for_testing != NULL );
|
sc = rtems_gxx_key_delete( key );
|
||||||
|
|
||||||
puts( "rtems_gxx_key_delete(key_for_testing) - OK" );
|
|
||||||
sc = rtems_gxx_key_delete((__gthread_key_t) &key_for_testing);
|
|
||||||
rtems_test_assert( sc == 0 );
|
rtems_test_assert( sc == 0 );
|
||||||
rtems_test_assert( key_for_testing == NULL );
|
|
||||||
|
|
||||||
|
memset( &key_obj, 0xff, sizeof( key_obj ) );
|
||||||
key = (void *)0x1234;
|
puts( "rtems_gxx_key_dtor(&key_obj) - OK" );
|
||||||
puts( "rtems_gxx_key_dtor(&key) - OK" );
|
sc = rtems_gxx_key_dtor( &key_obj, key_dtor );
|
||||||
sc = rtems_gxx_key_dtor((__gthread_key_t) &key, key_dtor);
|
|
||||||
rtems_test_assert( sc == 0 );
|
rtems_test_assert( sc == 0 );
|
||||||
rtems_test_assert( key == NULL );
|
rtems_test_assert( key_obj.val == 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_task Init(
|
rtems_task Init(
|
||||||
|
|||||||
Reference in New Issue
Block a user