(long_dbl): Add test for loooong numbers.
[kopensolaris-gnu/glibc.git] / shadow / fgetspent_r.c
index fafa89a..bf4a3f8 100644 (file)
@@ -41,14 +41,14 @@ __fgetspent_r (FILE *stream, struct spwd *resbuf, char *buffer, size_t buflen,
 
   do
     {
-      buffer[buflen] = '\xff';
+      buffer[buflen - 1] = '\xff';
       p = fgets (buffer, buflen, stream);
       if (p == NULL && feof (stream))
        {
          *result = NULL;
          return errno;
        }
-      if (p == NULL || buffer[buflen] != '\xff')
+      if (p == NULL || buffer[buflen - 1] != '\xff')
        {
          *result = NULL;
          return errno = ERANGE;
@@ -60,8 +60,7 @@ __fgetspent_r (FILE *stream, struct spwd *resbuf, char *buffer, size_t buflen,
     } while (*p == '\0' || *p == '#' ||        /* Ignore empty and comment lines.  */
             /* Parse the line.  If it is invalid, loop to
                get the next line of the file to parse.  */
-            ! parse_line (buffer, (void *) resbuf, NULL, 0,
-                          __errno_location ()));
+            ! parse_line (buffer, (void *) resbuf, NULL, 0, &errno));
 
   *result = resbuf;
   return 0;