+1999-09-24 Ulrich Drepper <drepper@cygnus.com>
+
+ * nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_grent): Do
+ not ovverwrite last group member with NULL pointer.
+ Reported by Thomas Winder <thomas.winder@newlogic.at>.
+
1999-09-24 Andreas Jaeger <aj@suse.de>
* stdio-common/tst-printf.c (main): Add a testcase for large
+1999-09-25 Ulrich Drepper <drepper@cygnus.com>
+
+ * condvar.c (pthread_cond_timedwait_relative): Never return with
+ EINTR. Patch by Andreas Schwab.
+
1999-09-19 Ulrich Drepper <drepper@cygnus.com>
* signals.c (sigaction): Correct last patch. Don't select
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);
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);
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;
++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;