From 255557f8c3bcc39467cd02a234d2a544f17d22c9 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sun, 27 Mar 2005 02:31:33 +0000 Subject: [PATCH] * timer.cc (nanosleep): Treat tv_sec < 0 as invalid. * include/search.h: Make declarations consistent with newlib. --- winsup/cygwin/ChangeLog | 6 ++++++ winsup/cygwin/include/search.h | 21 +++++++++++++++------ winsup/cygwin/signal.cc | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index cd890ec6c..0f420dbd2 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2005-03-26 Christopher Faylor + + * timer.cc (nanosleep): Treat tv_sec < 0 as invalid. + + * include/search.h: Make declarations consistent with newlib. + 2005-03-26 Pierre Humblet Christopher Faylor diff --git a/winsup/cygwin/include/search.h b/winsup/cygwin/include/search.h index fedfc8cf6..a1ccfe2aa 100644 --- a/winsup/cygwin/include/search.h +++ b/winsup/cygwin/include/search.h @@ -45,20 +45,29 @@ struct que_elem }; #endif +struct hsearch_data +{ + struct internal_head *htable; + size_t htablesize; +}; + __BEGIN_DECLS int hcreate (size_t); void hdestroy (void); ENTRY *hsearch (ENTRY, ACTION); +int hcreate_r (size_t, struct hsearch_data *); +void hdestroy_r (struct hsearch_data *); +void *tdelete (const void * __restrict, void ** __restrict, + int (*) (const void *, const void *)); +void tdestroy (void *, void (*)(void *)); +void *tfind (const void *, void **, + int (*) (const void *, const void *)); +void *tsearch (const void *, void **, int (*) (const void *, const void *)); +void twalk (const void *, void (*) (const void *, VISIT, int)); void *lfind (const void *, const void *, size_t *, size_t, int (*) (const void *, const void *)); void *lsearch (const void *, void *, size_t *, size_t, int (*) (const void *, const void *)); -void *tdelete (const void * __restrict, void ** __restrict, - int (*) (const void *, const void *)); -void *tfind (const void *, void * const *, - int (*) (const void *, const void *)); -void *tsearch (const void *, void **, int (*) (const void *, const void *)); -void twalk (const void *, void (*) (const void *, VISIT, int)); __END_DECLS #endif /* !_SEARCH_H_ */ diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 1808b2428..41b48313f 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -77,6 +77,7 @@ nanosleep (const struct timespec *rqtp, struct timespec *rmtp) pthread_testcancel (); if ((unsigned int) rqtp->tv_sec > (HIRES_DELAY_MAX / 1000 - 1) + || rqtp->tv_sec < 0 || (unsigned int) rqtp->tv_nsec > 999999999) { set_errno (EINVAL);