diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2012-06-22 15:11:15 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2012-06-22 15:11:15 +0000 |
commit | e86ff722e7f38c0ad5dce27190e18f5e8741b626 (patch) | |
tree | d2ec89ce9115cac06c02623c87ca56035dea8cf7 /libc/elf/dl-open.c | |
parent | 72c5cff8f745e77d8c84e826db2b3944414b9467 (diff) |
Merge changes between r19162 and r19234 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@19235 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/elf/dl-open.c')
-rw-r--r-- | libc/elf/dl-open.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libc/elf/dl-open.c b/libc/elf/dl-open.c index 45a70aeaf..32ae5cffe 100644 --- a/libc/elf/dl-open.c +++ b/libc/elf/dl-open.c @@ -1,5 +1,5 @@ /* Load a shared object at runtime, relocate it, and run its initializer. - Copyright (C) 1996-2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1996-2007, 2009-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -325,7 +325,7 @@ dl_open_worker (void *a) while (l != NULL); if (nmaps > 1) { - char seen[nmaps]; + uint16_t seen[nmaps]; memset (seen, '\0', nmaps); size_t i = 0; while (1) @@ -351,13 +351,13 @@ dl_open_worker (void *a) (k - i) * sizeof (maps[0])); maps[k] = thisp; - if (seen[i + 1] > 1) + if (seen[i + 1] > nmaps - i) { ++i; goto next_clear; } - char this_seen = seen[i]; + uint16_t this_seen = seen[i]; memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); seen[k] = this_seen; |