__libc_lock_lock (catalog->lock);
/* Check whether there was no other thread faster. */
- if (catalog->status != closed)
+ if (__builtin_expect (catalog->status != closed, 0))
/* While we waited some other thread tried to open the catalog. */
goto unlock_return;
{
const char *run_nlspath = catalog->nlspath;
#define ENOUGH(n) \
- if (bufact + (n) >=bufmax) \
+ if (__builtin_expect (bufact + (n) >= bufmax, 0)) \
{ \
char *old_buf = buf; \
bufmax += 256 + (n); \
{
size_t now = __read (fd, (((char *) &catalog->file_ptr)
+ (st.st_size - todo)), todo);
- if (now == 0)
+ if (now == 0 || now == (size_t) -1)
{
+#ifdef EINTR
+ if (now == (size_t) -1 && errno == EINTR)
+ continue;
+#endif
free ((void *) catalog->file_ptr);
catalog->status = nonexisting;
goto close_unlock_return;