diff --git a/src/lib/libc/stdlib/Makefile.inc b/src/lib/libc/stdlib/Makefile.inc index 80c3e5f5..0c0b1499 100644 --- a/src/lib/libc/stdlib/Makefile.inc +++ b/src/lib/libc/stdlib/Makefile.inc @@ -1,13 +1,14 @@ -# $OpenBSD: Makefile.inc,v 1.53 2014/05/08 21:43:49 deraadt Exp $ +# $OpenBSD: Makefile.inc,v 1.54 2014/08/15 04:14:36 guenther Exp $ # stdlib sources .PATH: ${LIBCSRCDIR}/arch/${MACHINE_CPU}/stdlib ${LIBCSRCDIR}/stdlib SRCS+= a64l.c abort.c atexit.c atoi.c atof.c atol.c atoll.c bsearch.c \ cfree.c exit.c ecvt.c gcvt.c getenv.c getopt_long.c \ - getsubopt.c hcreate.c heapsort.c imaxabs.c imaxdiv.c l64a.c llabs.c \ - lldiv.c lsearch.c malloc.c reallocarray.c merge.c posix_pty.c \ - qsort.c radixsort.c rand.c random.c realpath.c setenv.c strtoimax.c \ + getsubopt.c hcreate.c heapsort.c imaxabs.c imaxdiv.c insque.c \ + l64a.c llabs.c lldiv.c lsearch.c malloc.c reallocarray.c \ + merge.c posix_pty.c qsort.c radixsort.c rand.c random.c \ + realpath.c remque.c setenv.c strtoimax.c \ strtol.c strtoll.c strtonum.c strtoul.c strtoull.c strtoumax.c \ system.c tfind.c tsearch.c _rand48.c drand48.c erand48.c jrand48.c \ lcong48.c lrand48.c mrand48.c nrand48.c seed48.c srand48.c qabs.c \ @@ -24,12 +25,6 @@ SRCS+= abs.c div.c labs.c ldiv.c SRCS+= abs.c div.c labs.c ldiv.c .endif -.if (${MACHINE_CPU} == "vax") -SRCS+= insque.S remque.S -.else -SRCS+= insque.c remque.c -.endif - MAN+= a64l.3 abort.3 abs.3 alloca.3 atexit.3 atof.3 atoi.3 atol.3 atoll.3 \ bsearch.3 div.3 ecvt.3 exit.3 getenv.3 getopt.3 getopt_long.3 \ getsubopt.3 hcreate.3 imaxabs.3 imaxdiv.3 insque.3 labs.3 ldiv.3 \ diff --git a/src/lib/libc/stdlib/insque.c b/src/lib/libc/stdlib/insque.c index 8724efec..590ff837 100644 --- a/src/lib/libc/stdlib/insque.c +++ b/src/lib/libc/stdlib/insque.c @@ -1,4 +1,4 @@ -/* $OpenBSD: insque.c,v 1.2 2005/08/08 08:05:36 espie Exp $ */ +/* $OpenBSD: insque.c,v 1.3 2014/08/15 04:14:36 guenther Exp $ */ /* * Copyright (c) 1993 John Brezak @@ -28,6 +28,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include #include struct qelem { @@ -38,11 +39,16 @@ struct qelem { void insque(void *entry, void *pred) { - struct qelem *e = (struct qelem *) entry; - struct qelem *p = (struct qelem *) pred; + struct qelem *e = entry; + struct qelem *p = pred; - e->q_forw = p->q_forw; - e->q_back = p; - p->q_forw->q_back = e; - p->q_forw = e; + if (p == NULL) + e->q_forw = e->q_back = NULL; + else { + e->q_forw = p->q_forw; + e->q_back = p; + if (p->q_forw != NULL) + p->q_forw->q_back = e; + p->q_forw = e; + } } diff --git a/src/lib/libc/stdlib/remque.c b/src/lib/libc/stdlib/remque.c index ae249ae0..71b74b2d 100644 --- a/src/lib/libc/stdlib/remque.c +++ b/src/lib/libc/stdlib/remque.c @@ -1,4 +1,4 @@ -/* $OpenBSD: remque.c,v 1.2 2005/08/08 08:05:37 espie Exp $ */ +/* $OpenBSD: remque.c,v 1.3 2014/08/15 04:14:36 guenther Exp $ */ /* * Copyright (c) 1993 John Brezak @@ -28,6 +28,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include #include struct qelem { @@ -38,7 +39,10 @@ struct qelem { void remque(void *element) { - struct qelem *e = (struct qelem *) element; - e->q_forw->q_back = e->q_back; - e->q_back->q_forw = e->q_forw; + struct qelem *e = element; + + if (e->q_forw != NULL) + e->q_forw->q_back = e->q_back; + if (e->q_back != NULL) + e->q_back->q_forw = e->q_forw; }