From 2b7cf6dbb9d56c5fac8f673e7c9d06c81d312af5 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 13 Dec 2013 02:25:09 -0500 Subject: optimize get_current_dir_name to reduce stack bloat our getcwd already (as an extension) supports allocation of a buffer when the buffer argument is a null pointer, so there's no need to duplicate the allocation logic in this wrapper function. duplicating it is actually harmful in that it doubles the stack usage from PATH_MAX to 2*PATH_MAX. --- src/misc/get_current_dir_name.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/misc') diff --git a/src/misc/get_current_dir_name.c b/src/misc/get_current_dir_name.c index 8576df2c..782cddcd 100644 --- a/src/misc/get_current_dir_name.c +++ b/src/misc/get_current_dir_name.c @@ -7,11 +7,9 @@ char *get_current_dir_name(void) { struct stat a, b; - char buf[PATH_MAX]; char *res = getenv("PWD"); if (res && *res && !stat(res, &a) && !stat(".", &b) && (a.st_dev == b.st_dev) && (a.st_ino == b.st_ino)) return strdup(res); - if(!getcwd(buf, sizeof(buf))) return NULL; - return strdup(buf); + return getcwd(0, 0); } -- cgit v1.2.1