I recompiled with dmalloc though and got tons of printouts...
It appears that DO_HASHMEM reads outside of its buffer. Is this a good fix?
diff -c -r1.46 pike_memory.h *** pike_memory.h 13 May 2003 19:34:31 -0000 1.46 --- pike_memory.h 2 Oct 2003 15:21:39 -0000 *************** *** 191,196 **** --- 191,198 ---- #endif /* sizeof(char *) == 4 */
/* NB: RET should be an lvalue of type size_t. */ + /* NB2: A is evaluated twice (since that is usually a compile + time operation compared to adjusting a). */ #define DO_HASHMEM(RET, A, LEN, MLEN) \ do { \ const unsigned char *a = A; \ *************** *** 230,236 **** DO_IF_ELSE_UNALIGNED_MEMORY_ACCESS( \ { \ size_t *b; \ ! b=(size_t *)a; \ \ for(DIVIDE_BY_2_CHAR_P(mlen);mlen--;) \ { \ --- 232,238 ---- DO_IF_ELSE_UNALIGNED_MEMORY_ACCESS( \ { \ size_t *b; \ ! b=(size_t *)A; \ \ for(DIVIDE_BY_2_CHAR_P(mlen);mlen--;) \ { \
/ Martin Nilsson (saturator)
Previous text:
2003-10-02 17:12: Subject: valgrind
And there was much rejoicing!
/ David Hedbor