Clang, like LCC, objects to using '<' and '>' on function pointers.
authorben <ben@cda61777-01e9-0310-a592-d414129be87e>
Mon, 27 Aug 2012 23:16:49 +0000 (23:16 +0000)
committerben <ben@cda61777-01e9-0310-a592-d414129be87e>
Mon, 27 Aug 2012 23:16:49 +0000 (23:16 +0000)
I'm not entirely sure that using memcmp() is any more defined by the C
standard, but at least Clang doesn't complain about it.  While I'm
here, tree234 doesn't require that comparison functions return
precisely +1 or -1, so we can use the return value of memcmp()
directly.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9636 cda61777-01e9-0310-a592-d414129be87e

timing.c

index 841d973..9c2a878 100644 (file)
--- a/timing.c
+++ b/timing.c
@@ -60,15 +60,9 @@ static int compare_timers(void *av, void *bv)
      * Failing that, compare on the other two fields, just so that
      * we don't get unwanted equality.
      */
-#ifdef __LCC__
+#if defined(__LCC__) || defined(__clang__)
     /* lcc won't let us compare function pointers. Legal, but annoying. */
-    {
-       int c = memcmp(&a->fn, &b->fn, sizeof(a->fn));
-       if (c < 0)
-           return -1;
-       else if (c > 0)
-           return +1;
-    }
+    return memcmp(&a->fn, &b->fn, sizeof(a->fn));
 #else    
     if (a->fn < b->fn)
        return -1;