This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
libiberty/getcwd.c, null argument patch (and fixincl)
- To: EGCS Patches <egcs-patches at egcs dot cygnus dot com>
- Subject: libiberty/getcwd.c, null argument patch (and fixincl)
- From: "Melissa O'Neill" <oneill at cs dot sfu dot ca>
- Date: Sat, 22 May 1999 23:22:30 -0700
- cc: Bruce Korb <fixincludes at autogen dot freeservers dot com>
The files gcc/fixinc/fixincl.c and gcc/fixinc/server.c rely on the
mallocing behaviour of getcwd when passed a null argument for the buffer,
but the compatibility versions in the libiberty library do not support
this behaviour.
I've provided code to extend the libiberty library to support this
behaviour, but for maximum portability, I would recommend that the
maintainer of fixincl not depend on this behaviour because some getcwd
implementations may not support it.
Melissa.
Enc.
--- getcwd.c.orig Fri May 15 16:42:36 1998
+++ getcwd.c Sat May 22 20:14:58 1999
@@ -13,8 +13,11 @@
the supplied buffer and return a pointer to the buffer. If the
current directory's path doesn't fit in LEN characters, the result
is NULL and errno is set.
+ If pathname is a null pointer, getcwd() will obtain size bytes of
+ space using malloc.
+
BUGS
Emulated via the getwd() call, which is reasonable for most
systems that do not have getcwd().
@@ -46,8 +49,15 @@
if (result) {
if (strlen (ourbuf) >= len) {
errno = ERANGE;
return 0;
+ }
+ if (!buf) {
+ buf = (char*)malloc(len);
+ if (!buf) {
+ errno = ENOMEM;
+ return 0;
+ }
}
strcpy (buf, ourbuf);
}
return buf;