--- posix.c.~1.126.~ 2004-02-29 09:22:52.000000000 +1000 +++ posix.c 2004-03-18 14:02:04.000000000 +1000 @@ -1748,7 +1748,7 @@ { /* 256 is for Solaris, under Linux ENAMETOOLONG is returned if not large enough. */ - int len = 256, res; + int len = 256, res, save_errno; char *p = scm_malloc (len); SCM name; @@ -1761,7 +1761,9 @@ } if (res == -1) { + save_errno = errno; free (p); + errno = save_errno; SCM_SYSERROR; } name = scm_makfrom0str (p);