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;
    }


and leaks memory. If the path is 400, you do 3 mallocs, but the first two are never freed.

    Jan D.



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

Reply via email to