Kaynağa Gözat

Try a different approach to making publish function seem used.

We want the DISPATCH_ADD_PUB() macro to count as making a
DECLARE_PUBLISH() invocation "used", so let's try a new approach
that preserves that idea.  The old one apparently did not work for
some versions of osx clang.
Nick Mathewson 5 yıl önce
ebeveyn
işleme
beedadbeac
1 değiştirilmiş dosya ile 9 ekleme ve 1 silme
  1. 9 1
      src/lib/pubsub/pubsub_macros.h

+ 9 - 1
src/lib/pubsub/pubsub_macros.h

@@ -268,12 +268,20 @@
   }                                                             \
   EAT_SEMICOLON
 
+/**
+ * Add a fake use of the publish function for 'messagename', so that
+ * the compiler does not call it unused.
+ */
+#define DISPATCH__FAKE_USE_OF_PUBFN_(messagename)                       \
+  ( 0 ? (publish_fn__ ##messagename((msg_arg_type__##messagename)0), 1) \
+    : 1)
+
 /*
  * This macro is for internal use.  It backs DISPATCH_ADD_PUB*()
  */
 #define DISPATCH_ADD_PUB_(connector, channel, messagename, flags)       \
   (                                                                     \
-    ((void)publish_fn__ ##messagename),                                 \
+    DISPATCH__FAKE_USE_OF_PUBFN_(messagename),                          \
     pubsub_add_pub_((connector),                                        \
                       &pub_binding__ ##messagename,                     \
                       get_channel_id(# channel),                        \