mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 01:33:36 +08:00
2007-12-07 Ulrich Drepper <drepper@redhat.com> [BZ #5441] * stdio-common/vfscanf.c (_IO_vfwscanf): Don't free ptrs_to_free structure, it's allocated with alloca. * stdio-common/Makefile (tests): Add bug21. * stdio-common/bug21.c: New file. 2007-12-06 Aurelien Jarno <aurelien@aurel32.net> [BZ #5452] * sysdeps/unix/sysv/linux/bits/sched.h: Use __extension__ keyword for gcc's braced-groups. 2007-12-07 Ulrich Drepper <drepper@redhat.com> [BZ #5454] * inet/ether_line.c: Strip hostname of whitespaces. * inet/Makefile (tests): Add tst-ether_line. * inet/tst-ether_line.c: New file.
This commit is contained in:
parent
c9d65f0fbd
commit
26e21e7554
21
ChangeLog
21
ChangeLog
@ -1,3 +1,24 @@
|
||||
2007-12-07 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #5441]
|
||||
* stdio-common/vfscanf.c (_IO_vfwscanf): Don't free ptrs_to_free
|
||||
structure, it's allocated with alloca.
|
||||
* stdio-common/Makefile (tests): Add bug21.
|
||||
* stdio-common/bug21.c: New file.
|
||||
|
||||
2007-12-06 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
[BZ #5452]
|
||||
* sysdeps/unix/sysv/linux/bits/sched.h: Use __extension__
|
||||
keyword for gcc's braced-groups.
|
||||
|
||||
2007-12-07 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #5454]
|
||||
* inet/ether_line.c: Strip hostname of whitespaces.
|
||||
* inet/Makefile (tests): Add tst-ether_line.
|
||||
* inet/tst-ether_line.c: New file.
|
||||
|
||||
2007-12-03 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #5439]
|
||||
|
@ -52,7 +52,7 @@ routines := htonl htons \
|
||||
aux := check_pf check_native ifreq
|
||||
|
||||
tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
|
||||
tst-gethnm test-ifaddrs bug-if1 test-inet6_opt
|
||||
tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line
|
||||
|
||||
include ../Rules
|
||||
|
||||
|
@ -61,19 +61,20 @@ ether_line (const char *line, struct ether_addr *addr, char *hostname)
|
||||
++line;
|
||||
}
|
||||
|
||||
/* Remove trailing white space. */
|
||||
cp = __strchrnul (line, '#');
|
||||
while (cp > line && isspace (cp[-1]))
|
||||
--cp;
|
||||
/* Skip initial whitespace. */
|
||||
while (isspace (*line))
|
||||
++line;
|
||||
|
||||
if (cp == line)
|
||||
if (*line == '#' || *line == '\0')
|
||||
/* No hostname. */
|
||||
return -1;
|
||||
|
||||
/* The hostname is up to the next non-space character. */
|
||||
/* XXX This can cause trouble because the hostname might be too long
|
||||
but we have no possibility to check it here. */
|
||||
memcpy (hostname, line, cp - line);
|
||||
hostname [cp - line] = '\0';
|
||||
while (*line != '\0' && *line != '#' && !isspace (*line))
|
||||
*hostname++ = *line++;
|
||||
*hostname = '\0';
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
38
inet/tst-ether_line.c
Normal file
38
inet/tst-ether_line.c
Normal file
@ -0,0 +1,38 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <netinet/ether.h>
|
||||
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
struct ether_addr a;
|
||||
char buf[1000];
|
||||
if (ether_line ("00:01:02:03:04:05 aaaaa \n", &a, buf) != 0)
|
||||
{
|
||||
puts ("ether_line failed");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int res = 0;
|
||||
int i;
|
||||
for (i = 0; i < ETH_ALEN; ++i)
|
||||
{
|
||||
printf ("%02x%s",
|
||||
(int) a.ether_addr_octet[i], i + 1 == ETH_ALEN ? "" : ":");
|
||||
if (a.ether_addr_octet[i] != i)
|
||||
{
|
||||
printf ("octet %d is %d, expected %d\n",
|
||||
i, (int) a.ether_addr_octet[i], i);
|
||||
res = 1;
|
||||
}
|
||||
}
|
||||
|
||||
printf (" \"%s\"\n", buf);
|
||||
res |= strcmp (buf, "aaaaa") != 0;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#include "../test-skeleton.c"
|
@ -1,3 +1,10 @@
|
||||
2007-12-07 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #5455]
|
||||
* sysdeps/pthread/pthread.h [!__EXCEPTIONS] (pthread_cleanup_pop):
|
||||
Allow label before pthread_cleanup_pop.
|
||||
(pthread_cleanup_pop_restore_np): Likewise.
|
||||
|
||||
2007-12-04 Kaz Kojima <kkojima@rr.iij4u.or.jp>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
|
||||
|
@ -655,6 +655,7 @@ extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
|
||||
/* Remove a cleanup handler installed by the matching pthread_cleanup_push.
|
||||
If EXECUTE is non-zero, the handler function is called. */
|
||||
# define pthread_cleanup_pop(execute) \
|
||||
do; while (0); /* Empty to allow label before pthread_cleanup_pop. */ \
|
||||
} while (0); \
|
||||
__pthread_unregister_cancel (&__cancel_buf); \
|
||||
if (execute) \
|
||||
@ -690,6 +691,7 @@ extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
|
||||
restores the cancellation type that was in effect when the matching
|
||||
pthread_cleanup_push_defer was called. */
|
||||
# define pthread_cleanup_pop_restore_np(execute) \
|
||||
do; while (0); /* Empty to allow label before pthread_cleanup_pop. */ \
|
||||
} while (0); \
|
||||
__pthread_unregister_cancel_restore (&__cancel_buf); \
|
||||
if (execute) \
|
||||
|
@ -57,7 +57,7 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
|
||||
tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \
|
||||
tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
|
||||
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
|
||||
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20
|
||||
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21
|
||||
|
||||
test-srcs = tst-unbputc tst-printf
|
||||
|
||||
|
16
stdio-common/bug21.c
Normal file
16
stdio-common/bug21.c
Normal file
@ -0,0 +1,16 @@
|
||||
#include <stdio.h>
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
static const char buf[] = " ";
|
||||
char *str;
|
||||
|
||||
int r = sscanf (buf, "%as", &str);
|
||||
printf ("%d %p\n", r, str);
|
||||
|
||||
return r != -1 || str != NULL;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#include "../test-skeleton.c"
|
@ -2845,7 +2845,6 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
|
||||
*p->ptrs[cnt] = NULL;
|
||||
}
|
||||
p = p->next;
|
||||
free (ptrs_to_free);
|
||||
ptrs_to_free = p;
|
||||
}
|
||||
}
|
||||
|
@ -132,17 +132,21 @@ typedef struct
|
||||
} while (0)
|
||||
# endif
|
||||
# define __CPU_SET_S(cpu, setsize, cpusetp) \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu < 8 * (setsize) \
|
||||
? ((cpusetp)->__bits[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; })
|
||||
(__extension__ \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu < 8 * (setsize) \
|
||||
? ((cpusetp)->__bits[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; }))
|
||||
# define __CPU_CLR_S(cpu, setsize, cpusetp) \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu < 8 * (setsize) \
|
||||
? ((cpusetp)->__bits[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; })
|
||||
(__extension__ \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu < 8 * (setsize) \
|
||||
? ((cpusetp)->__bits[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; }))
|
||||
# define __CPU_ISSET_S(cpu, setsize, cpusetp) \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu < 8 * (setsize) \
|
||||
? (((cpusetp)->__bits[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0 : 0; })
|
||||
(__extension__ \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu < 8 * (setsize) \
|
||||
? (((cpusetp)->__bits[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0 \
|
||||
: 0; }))
|
||||
|
||||
# define __CPU_COUNT_S(setsize, cpusetp) \
|
||||
__sched_cpucount (setsize, cpusetp)
|
||||
@ -152,25 +156,27 @@ typedef struct
|
||||
(__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
|
||||
# else
|
||||
# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
|
||||
({ cpu_set_t *__arr1 = (cpusetp1); \
|
||||
cpu_set_t *__arr2 = (cpusetp2); \
|
||||
size_t __imax = (setsize) / sizeof (__cpu_mask); \
|
||||
size_t __i; \
|
||||
for (__i = 0; __i < __imax; ++__i) \
|
||||
if (__arr1->__bits[__i] != __arr2->__bits[__i]) \
|
||||
break; \
|
||||
__i == __imax; })
|
||||
(__extension__ \
|
||||
({ cpu_set_t *__arr1 = (cpusetp1); \
|
||||
cpu_set_t *__arr2 = (cpusetp2); \
|
||||
size_t __imax = (setsize) / sizeof (__cpu_mask); \
|
||||
size_t __i; \
|
||||
for (__i = 0; __i < __imax; ++__i) \
|
||||
if (__arr1->__bits[__i] != __arr2->__bits[__i]) \
|
||||
break; \
|
||||
__i == __imax; }))
|
||||
# endif
|
||||
|
||||
# define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \
|
||||
({ cpu_set_t *__dest = (destset); \
|
||||
cpu_set_t *__arr1 = (srcset1); \
|
||||
cpu_set_t *__arr2 = (srcset2); \
|
||||
size_t __imax = (setsize) / sizeof (__cpu_mask); \
|
||||
size_t __i; \
|
||||
for (__i = 0; __i < __imax; ++__i) \
|
||||
__dest->__bits[__i] = __arr1->__bits[__i] op __arr2->__bits[__i]; \
|
||||
__dest; })
|
||||
(__extension__ \
|
||||
({ cpu_set_t *__dest = (destset); \
|
||||
cpu_set_t *__arr1 = (srcset1); \
|
||||
cpu_set_t *__arr2 = (srcset2); \
|
||||
size_t __imax = (setsize) / sizeof (__cpu_mask); \
|
||||
size_t __i; \
|
||||
for (__i = 0; __i < __imax; ++__i) \
|
||||
__dest->__bits[__i] = __arr1->__bits[__i] op __arr2->__bits[__i]; \
|
||||
__dest; }))
|
||||
|
||||
# define __CPU_ALLOC_SIZE(count) \
|
||||
((((count) + __NCPUBITS - 1) / __NCPUBITS) * 8)
|
||||
|
Loading…
Reference in New Issue
Block a user