summaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-03 06:06:01 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-03 06:06:01 +0000
commit2dda64a6258fe213cb75f8a1b381d6a8ce338bb4 (patch)
tree69dc5d71503b8283d8144704ac5beaf98a8a2c94 /libiberty
parentd3ed35175e394ed9bf2721192f14f57c91c1fbe9 (diff)
downloadgcc-2dda64a6258fe213cb75f8a1b381d6a8ce338bb4.tar.gz
2009-06-03 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r148111 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@148114 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog16
-rw-r--r--libiberty/fibheap.c10
-rw-r--r--libiberty/pex-win32.c5
-rw-r--r--libiberty/snprintf.c16
-rw-r--r--libiberty/vsnprintf.c16
5 files changed, 48 insertions, 15 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 850979abb9a..69d3617d6e8 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,19 @@
+2009-05-30 Eli Zaretskii <eliz@gnu.org>
+
+ * snprintf.c: Doc fix.
+
+ * vsnprintf.c: Doc fix.
+
+2009-05-29 Kai Tietz <kai.tietz@onevision.com>
+
+ * pex-win32.c (pex_win32_fdopenr): Set INHERIT to false.
+
+2009-05-29 Michael Matz <matz@suse.de>
+
+ * fibheap.c (fibheap_replace_key_data): Make sure we don't early
+ out when forcing the minimum.
+ (fibheap_delete_node): Assert that we managed to force the minimum.
+
2009-05-25 Tristan Gingold <gingold@adacore.com>
* config.h-vms: Rewritten. Define configure macros.
diff --git a/libiberty/fibheap.c b/libiberty/fibheap.c
index c032149c0c2..a37ee4ef270 100644
--- a/libiberty/fibheap.c
+++ b/libiberty/fibheap.c
@@ -214,7 +214,10 @@ fibheap_replace_key_data (fibheap_t heap, fibnode_t node,
node->key = key;
y = node->parent;
- if (okey == key)
+ /* Short-circuit if the key is the same, as we then don't have to
+ do anything. Except if we're trying to force the new node to
+ be the new minimum for delete. */
+ if (okey == key && okey != FIBHEAPKEY_MIN)
return odata;
/* These two compares are specifically <= 0 to make sure that in the case
@@ -256,6 +259,11 @@ fibheap_delete_node (fibheap_t heap, fibnode_t node)
/* To perform delete, we just make it the min key, and extract. */
fibheap_replace_key (heap, node, FIBHEAPKEY_MIN);
+ if (node != heap->min)
+ {
+ fprintf (stderr, "Can't force minimum on fibheap.\n");
+ abort ();
+ }
fibheap_extract_min (heap);
return ret;
diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c
index 91e0bc882ff..44274067482 100644
--- a/libiberty/pex-win32.c
+++ b/libiberty/pex-win32.c
@@ -915,6 +915,11 @@ static FILE *
pex_win32_fdopenr (struct pex_obj *obj ATTRIBUTE_UNUSED, int fd,
int binary)
{
+ HANDLE h = (HANDLE) _get_osfhandle (fd);
+ if (h == INVALID_HANDLE_VALUE)
+ return NULL;
+ if (! SetHandleInformation (h, HANDLE_FLAG_INHERIT, 0))
+ return NULL;
return fdopen (fd, binary ? "rb" : "r");
}
diff --git a/libiberty/snprintf.c b/libiberty/snprintf.c
index f1ba49f980f..36c8e9b3430 100644
--- a/libiberty/snprintf.c
+++ b/libiberty/snprintf.c
@@ -27,13 +27,15 @@ the executable file might be covered by the GNU General Public License. */
@deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, ...)
-This function is similar to sprintf, but it will print at most @var{n}
-characters. On error the return value is -1, otherwise it returns the
-number of characters that would have been printed had @var{n} been
-sufficiently large, regardless of the actual value of @var{n}. Note
-some pre-C99 system libraries do not implement this correctly so users
-cannot generally rely on the return value if the system version of
-this function is used.
+This function is similar to @code{sprintf}, but it will write to
+@var{buf} at most @code{@var{n}-1} bytes of text, followed by a
+terminating null byte, for a total of @var{n} bytes.
+On error the return value is -1, otherwise it returns the number of
+bytes, not including the terminating null byte, that would have been
+written had @var{n} been sufficiently large, regardless of the actual
+value of @var{n}. Note some pre-C99 system libraries do not implement
+this correctly so users cannot generally rely on the return value if
+the system version of this function is used.
@end deftypefn
diff --git a/libiberty/vsnprintf.c b/libiberty/vsnprintf.c
index 7df5bd88e52..5470df2223b 100644
--- a/libiberty/vsnprintf.c
+++ b/libiberty/vsnprintf.c
@@ -27,13 +27,15 @@ the executable file might be covered by the GNU General Public License. */
@deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, va_list @var{ap})
-This function is similar to vsprintf, but it will print at most
-@var{n} characters. On error the return value is -1, otherwise it
-returns the number of characters that would have been printed had
-@var{n} been sufficiently large, regardless of the actual value of
-@var{n}. Note some pre-C99 system libraries do not implement this
-correctly so users cannot generally rely on the return value if the
-system version of this function is used.
+This function is similar to @code{vsprintf}, but it will write to
+@var{buf} at most @code{@var{n}-1} bytes of text, followed by a
+terminating null byte, for a total of @var{n} bytes. On error the
+return value is -1, otherwise it returns the number of characters that
+would have been printed had @var{n} been sufficiently large,
+regardless of the actual value of @var{n}. Note some pre-C99 system
+libraries do not implement this correctly so users cannot generally
+rely on the return value if the system version of this function is
+used.
@end deftypefn