[rtems commit] libtests/gxx01: Avoid random memory read/write

Sebastian Huber sebh at rtems.org
Thu Jul 18 07:54:30 UTC 2013


Module:    rtems
Branch:    master
Commit:    0dd262d33df323bc8ef53b8645500e36c1b6ab96
Changeset: http://git.rtems.org/rtems/commit/?id=0dd262d33df323bc8ef53b8645500e36c1b6ab96

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Jul 18 09:42:46 2013 +0200

libtests/gxx01: Avoid random memory read/write

---

 testsuites/libtests/gxx01/gxx01.scn |   10 +++-------
 testsuites/libtests/gxx01/init.c    |   27 ++++++++++++---------------
 2 files changed, 15 insertions(+), 22 deletions(-)

diff --git a/testsuites/libtests/gxx01/gxx01.scn b/testsuites/libtests/gxx01/gxx01.scn
index 60cf16c..5ffd498 100644
--- a/testsuites/libtests/gxx01/gxx01.scn
+++ b/testsuites/libtests/gxx01/gxx01.scn
@@ -25,12 +25,8 @@ rtems_gxx_key_create(&key, key_dtor) - OK
 rtems_gxx_setspecific() - OK
 rtems_gxx_getspecific(key) already existing - OK
 rtems_gxx_key_delete(key) - OK
-rtems_gxx_getspecific(key_for_testing) non-existent - OK
-rtems_gxx_key_delete(key_for_testing) - OK
-rtems_gxx_key_dtor(&key) - OK
+rtems_gxx_getspecific(key) non-existent - OK
+rtems_gxx_key_delete(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 ***
-fatal error, exiting
diff --git a/testsuites/libtests/gxx01/init.c b/testsuites/libtests/gxx01/init.c
index 1b782fe..eb46725 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(




More information about the vc mailing list