From: Ulrich Drepper Date: Sat, 25 Sep 1999 07:09:36 +0000 (+0000) Subject: Update. X-Git-Tag: upstream/2.20~19744 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=079c00e64c9f6aafcd816790d49cb144d00a6a18;p=platform%2Fupstream%2Flinaro-glibc.git Update. 1999-09-24 Ulrich Drepper * nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_grent): Do not ovverwrite last group member with NULL pointer. Reported by Thomas Winder . --- diff --git a/ChangeLog b/ChangeLog index f214f15..ed49785 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +1999-09-24 Ulrich Drepper + + * nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_grent): Do + not ovverwrite last group member with NULL pointer. + Reported by Thomas Winder . + 1999-09-24 Andreas Jaeger * stdio-common/tst-printf.c (main): Add a testcase for large diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 1551059..1881795 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,8 @@ +1999-09-25 Ulrich Drepper + + * condvar.c (pthread_cond_timedwait_relative): Never return with + EINTR. Patch by Andreas Schwab. + 1999-09-19 Ulrich Drepper * signals.c (sigaction): Correct last patch. Don't select diff --git a/linuxthreads/condvar.c b/linuxthreads/condvar.c index cd22a24..a27b093 100644 --- a/linuxthreads/condvar.c +++ b/linuxthreads/condvar.c @@ -76,6 +76,7 @@ pthread_cond_timedwait_relative(pthread_cond_t *cond, enqueue(&cond->__c_waiting, self); __pthread_unlock(&cond->__c_lock); pthread_mutex_unlock(mutex); + continue_waiting: /* Set up a longjmp handler for the restart and cancel signals */ if (sigsetjmp(jmpbuf, 1) == 0) { THREAD_SETMEM(self, p_signal_jmp, &jmpbuf); @@ -113,13 +114,16 @@ pthread_cond_timedwait_relative(pthread_cond_t *cond, pthread_mutex_lock(mutex); pthread_exit(PTHREAD_CANCELED); } - /* If not signaled: also remove ourselves and return an error code */ + /* If not signaled: also remove ourselves and return an error code, but + only if the timeout has elapsed. If not, jsut continue waiting. */ if (THREAD_GETMEM(self, p_signal) == 0) { + if (retsleep != 0) + goto continue_waiting; __pthread_lock(&cond->__c_lock, self); remove_from_queue(&cond->__c_waiting, self); __pthread_unlock(&cond->__c_lock); pthread_mutex_lock(mutex); - return retsleep == 0 ? ETIMEDOUT : EINTR; + return ETIMEDOUT; } /* Otherwise, return normally */ pthread_mutex_lock(mutex); diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c index 35b8a28..e8d1079 100644 --- a/nis/nss_nisplus/nisplus-parser.c +++ b/nis/nss_nisplus/nisplus-parser.c @@ -231,9 +231,9 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry, struct group *gr, break; if (room_left < sizeof (char *)) - goto no_more_room; + goto no_more_room; room_left -= sizeof (char *); - gr->gr_mem[count] = line; + gr->gr_mem[count++] = line; while (*line != '\0' && *line != ',' && !isspace (*line)) ++line; @@ -248,13 +248,10 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry, struct group *gr, ++line; else ++line; - ++count; } - else - gr->gr_mem[count+1] = NULL; } if (room_left < sizeof (char *)) - goto no_more_room; + goto no_more_room; room_left -= sizeof (char *); gr->gr_mem[count] = NULL;