From: Julian Seward Date: Sun, 2 Dec 2007 02:05:23 +0000 (+0000) Subject: Wibble. X-Git-Tag: svn/VALGRIND_3_3_0~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a7c3b3407236f63d6a28ae7a4cddf42c794161a;p=thirdparty%2Fvalgrind.git Wibble. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7263 --- diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c index 8a98e5bcd0..e8105ddc01 100644 --- a/helgrind/hg_main.c +++ b/helgrind/hg_main.c @@ -66,13 +66,14 @@ worthwhile performance benefits over -O. */ +// FIXME catch sync signals (SEGV, basically) and unlock BHL, +// if held. Otherwise a LOCK-prefixed insn which segfaults +// gets Helgrind into a total muddle as the BHL will not be +// released after the insn. + // FIXME what is supposed to happen to locks in memory which // is relocated as a result of client realloc? -// FIXME some kind of ownership recycling problem in -// init_thread_specific_state() for programs which use the same thread -// slot more than once? - // FIXME put referencing ThreadId into Thread and get // rid of the slow reverse mapping function. diff --git a/helgrind/hg_wordfm.c b/helgrind/hg_wordfm.c index b839a38ede..faaeec740f 100644 --- a/helgrind/hg_wordfm.c +++ b/helgrind/hg_wordfm.c @@ -386,7 +386,7 @@ AvlNode* avl_find_node ( AvlNode* t, Word k, Word(*kCmp)(Word,Word) ) while (True) { if (t == NULL) return NULL; cmpres = kCmp(t->key, k); - if (cmpres > 0) t = t->child[0]; else + if (cmpres > 0) t = t->child[0]; else if (cmpres < 0) t = t->child[1]; else return t; } @@ -399,7 +399,7 @@ AvlNode* avl_find_node ( AvlNode* t, Word k, Word(*kCmp)(Word,Word) ) cmpres = ((Word)t->key) - ((Word)k); if (cmpres == 0) return t; /* unlikely ==> predictable */ cmpresU = (UWord)cmpres; - cmpresU >>=/*unsigned*/ (8 * sizeof(cmpres) - 1); + cmpresU >>=/*unsigned*/ (8 * sizeof(cmpresU) - 1); t = t->child[cmpresU]; } }