+1999-09-24 Andreas Jaeger <aj@suse.de>
+
+ * stdio-common/tst-printf.c (main): Add a testcase for large
+ precision. Reported by Tymm Twillman <tymm@coe.missouri.edu>.
+
+1999-09-24 Andreas Schwab <schwab@suse.de>
+
+ * math/bits/mathcalls.h: Fix last change. Also declare __finite.
+
+1999-09-24 Andreas Jaeger <aj@suse.de>
+
+ * intl/finddomain.c (_nl_find_domain): Fix memory leak: Free
+ normalized_codeset. Reported by Belicky Zsolt <zsolt@prolan.hu>.
+
+1999-09-23 Mark Kettenis <kettenis@gnu.org>
+
+ * sysdeps/unix/sysv/linux/Makefile [malloc] (CFLAGS-malloc.c): New
+ variable. Define MORECORE_CLEARS to 2.
+
+ * malloc/malloc.c (cALLOc): Correctly handle systems where sbrk
+ doesn't clear the contents of memory that is reallocated after
+ decrementing the break value first. Update comment about
+ MORECORE_CLEARS, explaining the meaning of the values it can be
+ set to.
+
1999-09-23 Ulrich Drepper <drepper@cygnus.com>
* nis/nss_compat/compat-pwd.c (internal_getpwuid_r): Set errno in
* stdio-common/tstscanf.c (main): Add test case from PR libc/1313
reported by Ben Caradoc-Davies <bmcd@physics.otago.ac.nz>.
-
+
1999-09-22 Andreas Schwab <schwab@suse.de>
* stdio-common/vfscanf.c: Fix width handling when scanning floats.
if (alias_value != NULL)
free (locale);
+ /* The space for normalized_codeset is dynamically allocated. Free it. */
+ if (mask & XPG_NORM_CODESET)
+ free (normalized_codeset);
+
return retval;
}
MORECORE_FAILURE (default: -1)
The value returned upon failure of MORECORE.
MORECORE_CLEARS (default 1)
- True (1) if the routine mapped to MORECORE zeroes out memory (which
- holds for sbrk).
+ The degree to which the routine mapped to MORECORE zeroes out
+ memory: never (0), only for newly allocated space (1) or always
+ (2). The distinction between (1) and (2) is necessary because on
+ some systems, if the application first decrements and then
+ increments the break value, the contents of the reallocated space
+ are unspecified.
DEFAULT_TRIM_THRESHOLD
DEFAULT_TOP_PAD
DEFAULT_MMAP_THRESHOLD
#endif
-static size_t __libc_pagesize;
-
#define MORECORE (*__morecore)
#define MORECORE_FAILURE 0
+
+#ifndef MORECORE_CLEARS
#define MORECORE_CLEARS 1
+#endif
+
+static size_t __libc_pagesize;
+
#define mmap __mmap
#define munmap __munmap
#define mremap __mremap
if(!ar_ptr)
return 0;
- /* check if expand_top called, in which case don't need to clear */
+ /* Check if expand_top called, in which case there may be
+ no need to clear. */
#if MORECORE_CLEARS
oldtop = top(ar_ptr);
oldtopsize = chunksize(top(ar_ptr));
+#if MORECORE_CLEARS < 2
+ /* Only newly allocated memory is guaranteed to be cleared. */
+ if (oldtopsize < sbrk_base + max_sbrked_mem - (char *)oldtop)
+ oldtopsize = (sbrk_base + max_sbrked_mem - (char *)oldtop);
+#endif
#endif
p = chunk_alloc (ar_ptr, sz);
is +Infinity, -1 if it is -Infinity. */
__MATHDECL_1 (int,__isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
+/* Return nonzero if VALUE is finite and not NaN. */
+__MATHDECL_1 (int,__finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
+
#ifdef __USE_MISC
/* Return 0 if VALUE is finite or NaN, +1 if it
is +Infinity, -1 if it is -Infinity. */
__MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
/* Return nonzero if VALUE is finite and not NaN. */
-__MATHDECLX (int,finite,, (_Mdouble_ __value), (__const__));
+__MATHDECL_1 (int,finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
/* Deal with an infinite or NaN result.
If ERROR is ERANGE, result is +Inf;
/* Return nonzero if VALUE is not a number. */
-__MATHDECLX (int,__isnan,, (_Mdouble_ __value), (__const__));
+__MATHDECL_1 (int,__isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
#if defined __USE_MISC || defined __USE_XOPEN
/* Return nonzero if VALUE is not a number. */
-__MATHDECLX (int,isnan,, (_Mdouble_ __value), (__const__));
+__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
/* Bessel functions. */
__MATHCALL (j0,, (_Mdouble_));
{
char buf[20];
+ char buf2[512];
printf ("snprintf (\"%%30s\", \"foo\") == %d, \"%.*s\"\n",
snprintf (buf, sizeof (buf), "%30s", "foo"), sizeof (buf), buf);
+ printf ("snprintf (\"%%.999999u\", 10)\n",
+ snprintf(buf2, sizeof(buf2), "%.999999u", 10));
}
fp_test ();
CPPFLAGS += -DHAVE_LLSEEK=1
endif
+ifeq ($(subdir),malloc)
+CFLAGS-malloc.c = -DMORECORE_CLEARS=2
+endif
+
ifeq ($(subdir),misc)
sysdep_routines += sysctl clone llseek getresuid getresgid umount umount2