about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--posix/regex.h4
-rw-r--r--stdlib/strfmon.c11
3 files changed, 16 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 30136f55ff..f11c9c5a6e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2000-01-19  Ulrich Drepper  <drepper@cygnus.com>
 
+	* stdlib/strfmon.c: Don't report an error if final NUL is at the
+	end of the buffer.  Set errno correctly if floating-point number
+	would overflow buffer.
+
+	* posix/regex.h: Update comment of
+	RE_SYNTAX_POSIX_MINIMAL_EXTENDED.
+
 	* locale/weight.h (findidx): Little optimization.  Correctly return
 	offset in indirect table.
 	* locale/programs/ld-collate.c (struct element_t): Add mblast
diff --git a/posix/regex.h b/posix/regex.h
index f8a123054b..5edeff3551 100644
--- a/posix/regex.h
+++ b/posix/regex.h
@@ -226,8 +226,8 @@ extern reg_syntax_t re_syntax_options;
    | RE_NO_BK_PARENS        | RE_NO_BK_VBAR				\
    | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
 
-/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
-   replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added.  */
+/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
+   removed and RE_NO_BK_REFS is added.  */
 #define RE_SYNTAX_POSIX_MINIMAL_EXTENDED				\
   (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS			\
    | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES				\
diff --git a/stdlib/strfmon.c b/stdlib/strfmon.c
index 7041994eca..ac6b8b6c93 100644
--- a/stdlib/strfmon.c
+++ b/stdlib/strfmon.c
@@ -1,5 +1,5 @@
 /* Formatting a monetary value according to the current locale.
-   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>
    and Jochen Hein <Jochen.Hein@informatik.TU-Clausthal.de>, 1996.
@@ -465,7 +465,10 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
 	}
 
       if (s[maxsize - 1] != '\0')
-	return -1;
+	{
+	  __set_errno (E2BIG);
+	  return -1;
+	}
 
       dest += done;
 
@@ -521,9 +524,9 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
     }
 
   /* Terminate the string.  */
-  out_char ('\0');
+  *dest = '\0';
 
   va_end (ap);
 
-  return dest - s - 1;
+  return dest - s;
 }