--- src/buffer.c.old 2005-07-28 19:14:42.000000000 +0200
   +++ src/buffer.c     2005-07-30 03:20:36.000000000 +0200
...
   +      {
   +        int buf_size = 2;
   +        buf = xmalloc (buf_size);
   +        for(;;)
   +          {
   +            if(getcwd (buf, buf_size) == 0)
   +              {
   +                if(errno == ERANGE)
   +                  {
   +                    buf_size *= 2;
   +                    buf = xrealloc (buf, buf_size);
   +                  }
   +                else
   +                  fatal ("`getcwd' failed: %s\n", strerror (errno));
   +              }
   +            else
   +              break;
   +          }
   +
   +      }     

How about the following instead...  It is far cleaner and easier to
understand.

 int buf_size = 100;
 while (1)
   {
      buf = (char *) xmalloc (buf_size);
      if (getcwd (buf, buf_size) == buf)
        break;
      if (errno != ERANGE)
        {
          free (buf);
          fatal ("`getcwd' failed: %s\n", strerror (errno));
        }
      size *= 2;
    }


_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

Reply via email to