From: Nicholas Nethercote Date: Mon, 26 Mar 2007 22:10:53 +0000 (+0000) Subject: Don't read ./.valgrindrc if CWD==HOME. X-Git-Tag: svn/VALGRIND_3_2_3~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=038985206c5a027b2f9dc15f4cec5e78eafcc899;p=thirdparty%2Fvalgrind.git Don't read ./.valgrindrc if CWD==HOME. Merged from trunk (r6660). Also required r6380. git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_2_BRANCH@6666 --- diff --git a/coregrind/m_commandline.c b/coregrind/m_commandline.c index dd809a83df..6a8c101eb6 100644 --- a/coregrind/m_commandline.c +++ b/coregrind/m_commandline.c @@ -207,9 +207,19 @@ void VG_(split_up_argv)( Int argc, HChar** argv ) // read_dot_valgrindrc() allocates the return value with // VG_(malloc)(). We do not free f1_clo and f2_clo as they get // put into VG_(args_for_valgrind) and so must persist. - HChar* f1_clo = read_dot_valgrindrc( VG_(getenv)("HOME") ); + HChar* home = VG_(getenv)("HOME"); + HChar* f1_clo = home ? read_dot_valgrindrc( home ) : NULL; HChar* env_clo = VG_(strdup)( VG_(getenv)(VALGRIND_OPTS) ); - HChar* f2_clo = read_dot_valgrindrc("."); + HChar* f2_clo = NULL; + + // Don't read ./.valgrindrc if "." is the same as "$HOME", else its + // contents will be applied twice. (bug #142488) + if (home) { + HChar cwd[VKI_PATH_MAX+1]; + Bool cwd_ok = VG_(getcwd)(cwd, VKI_PATH_MAX); + f2_clo = ( (cwd_ok && VG_STREQ(home, cwd)) + ? NULL : read_dot_valgrindrc(".") ); + } if (f1_clo) add_args_from_string( f1_clo ); if (env_clo) add_args_from_string( env_clo );