diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-18 09:42:46 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-18 09:58:56 +0200 |
commit | 0dd262d33df323bc8ef53b8645500e36c1b6ab96 (patch) | |
tree | 27c777a770f01be46495aa804ffe02e1871a01f2 /testsuites/libtests/gxx01/init.c | |
parent | score: Update due to API changes (diff) | |
download | rtems-0dd262d33df323bc8ef53b8645500e36c1b6ab96.tar.bz2 |
libtests/gxx01: Avoid random memory read/write
Diffstat (limited to 'testsuites/libtests/gxx01/init.c')
-rw-r--r-- | testsuites/libtests/gxx01/init.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/testsuites/libtests/gxx01/init.c b/testsuites/libtests/gxx01/init.c index 1b782feb25..eb46725175 100644 --- a/testsuites/libtests/gxx01/init.c +++ b/testsuites/libtests/gxx01/init.c @@ -116,7 +116,6 @@ void test_once(void) } volatile bool key_dtor_ran; -void *key_for_testing; void key_dtor(void *ptr) { @@ -128,6 +127,7 @@ void test_key(void) int sc; __gthread_key_t key; void *p; + __gthread_key key_obj; puts( "rtems_gxx_key_create(&key, NULL) - OK" ); sc = rtems_gxx_key_create(&key, NULL); @@ -154,25 +154,22 @@ void test_key(void) rtems_test_assert( sc == 0 ); rtems_test_assert( key_dtor_ran == true ); - puts( "rtems_gxx_getspecific(key_for_testing) non-existent - OK" ); - p = rtems_gxx_getspecific((__gthread_key_t) &key_for_testing); + key = calloc( 1, sizeof( *key ) ); + 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( key_for_testing == NULL ); - key_for_testing = malloc(4); - rtems_test_assert( key_for_testing != NULL ); - - puts( "rtems_gxx_key_delete(key_for_testing) - OK" ); - sc = rtems_gxx_key_delete((__gthread_key_t) &key_for_testing); + puts( "rtems_gxx_key_delete(key) - OK" ); + sc = rtems_gxx_key_delete( key ); rtems_test_assert( sc == 0 ); - rtems_test_assert( key_for_testing == NULL ); - - key = (void *)0x1234; - puts( "rtems_gxx_key_dtor(&key) - OK" ); - sc = rtems_gxx_key_dtor((__gthread_key_t) &key, key_dtor); + memset( &key_obj, 0xff, sizeof( key_obj ) ); + puts( "rtems_gxx_key_dtor(&key_obj) - OK" ); + sc = rtems_gxx_key_dtor( &key_obj, key_dtor ); rtems_test_assert( sc == 0 ); - rtems_test_assert( key == NULL ); + rtems_test_assert( key_obj.val == 0 ); } rtems_task Init( |