summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/src/sync.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-11-17 22:55:05 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-11-17 22:55:05 +0000
commit336227dbc3c22b9f16bbf8bb9e8764a57517d750 (patch)
treee51ddf1465595e038e93d09baa829efca5cee7c3 /cpukit/libcsupport/src/sync.c
parent2006-11-17 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-336227dbc3c22b9f16bbf8bb9e8764a57517d750.tar.bz2
2006-11-17 Joel Sherrill <joel@OARcorp.com>
* libcsupport/src/sync.c: Do not dereference NULL reent.
Diffstat (limited to 'cpukit/libcsupport/src/sync.c')
-rw-r--r--cpukit/libcsupport/src/sync.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/cpukit/libcsupport/src/sync.c b/cpukit/libcsupport/src/sync.c
index 8d1f52e725..ad1ac0e052 100644
--- a/cpukit/libcsupport/src/sync.c
+++ b/cpukit/libcsupport/src/sync.c
@@ -55,15 +55,19 @@ static void sync_wrapper(FILE *f)
static void sync_per_thread(Thread_Control *t)
{
struct _reent *current_reent;
+ struct _reent *this_reent;
/*
* The sync_wrapper() function will operate on the current thread's
* reent structure so we will temporarily use that.
*/
- current_reent = _Thread_Executing->libc_reent;
- _Thread_Executing->libc_reent = t->libc_reent;
- _fwalk (t->libc_reent, sync_wrapper);
- _Thread_Executing->libc_reent = current_reent;
+ this_reent = t->libc_reent;
+ if ( this_reent ) {
+ current_reent = _Thread_Executing->libc_reent;
+ _Thread_Executing->libc_reent = this_reent;
+ _fwalk (t->libc_reent, sync_wrapper);
+ _Thread_Executing->libc_reent = current_reent;
+ }
}
int sync(void)