incorrect use in example/memcached_light causing segfaults every 2nd time you ran it.
[m6w6/libmemcached] / example / memcached_light.c
index 741ef82e002b863c4679a50fcab015dd7a8e4b8a..d9e14727a6e664be4910b8d9721a7d29fd09c84d 100644 (file)
@@ -40,6 +40,7 @@
 #include <libmemcached/protocol_handler.h>
 #include <libmemcached/byteorder.h>
 #include "storage.h"
+#include "memcached_light.h"
 
 extern memcached_binary_protocol_callback_st interface_v0_impl;
 extern memcached_binary_protocol_callback_st interface_v1_impl;
@@ -229,6 +230,12 @@ int main(int argc, char **argv)
   int cmd;
   memcached_binary_protocol_callback_st *interface= &interface_v0_impl;
 
+  /*
+   * We need to initialize the handlers manually due to a bug in the
+   * warnings generated by struct initialization in gcc (all the way up to 4.4)
+   */
+  initialize_interface_v0_handler();
+
   while ((cmd= getopt(argc, argv, "v1p:?")) != EOF)
   {
     switch (cmd) {
@@ -304,7 +311,6 @@ static void work(void)
     fds[max_poll].events= POLLIN;
     fds[max_poll].revents= 0;
     fds[max_poll].fd= server_sockets[max_poll];
-    ++max_poll;
   }
 
   while (true)