Fix up the wrapper for getdirentries64 a bit so as to avoid false positives
from it.  Unfortunately I can't tell why this was happening.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14733 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_syswrap/syswrap-darwin.c b/coregrind/m_syswrap/syswrap-darwin.c
index 30e6d77..de79f05 100644
--- a/coregrind/m_syswrap/syswrap-darwin.c
+++ b/coregrind/m_syswrap/syswrap-darwin.c
@@ -3870,12 +3870,21 @@
    PRINT("getdirentries64(%ld, %#lx, %lu, %#lx)", ARG1, ARG2, ARG3, ARG4);
    PRE_REG_READ4(vki_ssize_t, "getdirentries", 
                  int,fd, char *,buf, vki_size_t,nbytes, vki_off_t *,basep);
-   PRE_MEM_WRITE("getdirentries(position)", ARG4, sizeof(vki_off_t));
-   PRE_MEM_WRITE("getdirentries(buf)", ARG2, ARG3);
+   /* JRS 18-Nov-2014: it appears that sometimes |basep| doesn't point
+      to valid memory and the kernel doesn't modify it.  I can't
+      determine the conditions under which that happens.  But it
+      causes Memcheck to complain, confusingly.  So disable this check
+      for the time being.
+
+      PRE_MEM_WRITE("getdirentries64(position)", ARG4, sizeof(vki_off_t));
+   */
+   PRE_MEM_WRITE("getdirentries64(buf)", ARG2, ARG3);
 }
 POST(getdirentries64) 
 {
-   POST_MEM_WRITE(ARG4, sizeof(vki_off_t));
+   /* Disabled; see coments in the PRE wrapper.
+      POST_MEM_WRITE(ARG4, sizeof(vki_off_t));
+   */
    // GrP fixme be specific about d_name? (fixme copied from 32 bit version)
    POST_MEM_WRITE(ARG2, RES);
 }