changeset 6227:523c3ee21fa7

zeromq: add gcc12 patch * src/zeromq-1.patch: new file * dist-files.mk: add ref to new file
author John Donoghue <john.donoghue@ieee.org>
date Mon, 16 May 2022 18:49:17 -0400
parents 6e379d14707d
children f40df5c4d8c8
files dist-files.mk src/zeromq-1.patch
diffstat 2 files changed, 133 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Mon May 16 18:46:53 2022 -0400
+++ b/dist-files.mk	Mon May 16 18:49:17 2022 -0400
@@ -815,6 +815,7 @@
   xz.mk \
   yasm.mk \
   zenity.mk \
+  zeromq-1.patch \
   zeromq.mk \
   zlib-1-win32-static.patch \
   zlib.mk \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/zeromq-1.patch	Mon May 16 18:49:17 2022 -0400
@@ -0,0 +1,132 @@
+Patch for GCC12
+diff --git a/doc/zmq_socket_monitor_versioned.txt b/doc/zmq_socket_monitor_versioned.txt
+index 5339f404a4..e71dd3544d 100644
+--- a/doc/zmq_socket_monitor_versioned.txt
++++ b/doc/zmq_socket_monitor_versioned.txt
+@@ -244,7 +244,7 @@ EXAMPLE
+ //  in case of error.
+ 
+ static uint64_t
+-get_monitor_event (void *monitor, uint64_t *value, char **local_address, char **remote_address)
++get_monitor_event (void *monitor, uint64_t **value, char **local_address, char **remote_address)
+ {
+     //  First frame in message contains event number
+     zmq_msg_t msg;
+@@ -267,6 +267,11 @@ get_monitor_event (void *monitor, uint64_t *value, char **local_address, char **
+     memcpy (&value_count, zmq_msg_data (&msg), sizeof (value_count));
+     zmq_msg_close (&msg);
+ 
++    if (value) {
++        *value = (uint64_t *) malloc (value_count * sizeof (uint64_t));
++        assert (*value);
++    }
++
+     for (uint64_t i = 0; i < value_count; ++i) {
+         //  Subsequent frames in message contain event values
+         zmq_msg_init (&msg);
+@@ -274,8 +279,8 @@ get_monitor_event (void *monitor, uint64_t *value, char **local_address, char **
+             return -1;              //  Interrupted, presumably
+         assert (zmq_msg_more (&msg));
+ 
+-        if (value_ && value_ + i)
+-            memcpy (value_ + i, zmq_msg_data (&msg), sizeof (*value_));
++        if (value && *value)
++            memcpy (&(*value)[i], zmq_msg_data (&msg), sizeof (uint64_t));
+         zmq_msg_close (&msg);
+     }
+ 
+diff --git a/tests/test_monitor.cpp b/tests/test_monitor.cpp
+index b9309e6df3..7398dbd8d0 100644
+--- a/tests/test_monitor.cpp
++++ b/tests/test_monitor.cpp
+@@ -396,17 +396,19 @@ void test_monitor_versioned_stats (bind_function_t bind_function_,
+     for (int i = 0; i < pulls_count; ++i) {
+         char *push_local_address = NULL;
+         char *push_remote_address = NULL;
+-        uint64_t queue_stat[2];
++        uint64_t *queue_stat = NULL;
+         int64_t event = get_monitor_event_v2 (
+-          push_mon, queue_stat, &push_local_address, &push_remote_address);
++          push_mon, &queue_stat, &push_local_address, &push_remote_address);
+         TEST_ASSERT_EQUAL_STRING (server_endpoint, push_local_address);
+         TEST_ASSERT_EQUAL_STRING_LEN (expected_prefix_, push_remote_address,
+                                       strlen (expected_prefix_));
+         TEST_ASSERT_EQUAL_INT (ZMQ_EVENT_PIPES_STATS, event);
++        TEST_ASSERT_NOT_NULL (queue_stat);
+         TEST_ASSERT_EQUAL_INT (i == 0 ? 0 : send_hwm, queue_stat[0]);
+         TEST_ASSERT_EQUAL_INT (0, queue_stat[1]);
+         free (push_local_address);
+         free (push_remote_address);
++        free (queue_stat);
+     }
+ 
+     //  Close client and server
+diff --git a/tests/testutil_monitoring.cpp b/tests/testutil_monitoring.cpp
+index 06406270a0..8668caee83 100644
+--- a/tests/testutil_monitoring.cpp
++++ b/tests/testutil_monitoring.cpp
+@@ -207,7 +207,7 @@ int expect_monitor_event_multiple (void *server_mon_,
+ }
+ 
+ static int64_t get_monitor_event_internal_v2 (void *monitor_,
+-                                              uint64_t *value_,
++                                              uint64_t **value_,
+                                               char **local_address_,
+                                               char **remote_address_,
+                                               int recv_flag_)
+@@ -239,6 +239,12 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_,
+     memcpy (&value_count, zmq_msg_data (&msg), sizeof (value_count));
+     zmq_msg_close (&msg);
+ 
++    if (value_) {
++        *value_ =
++          (uint64_t *) malloc ((size_t) value_count * sizeof (uint64_t));
++        TEST_ASSERT_NOT_NULL (*value_);
++    }
++
+     for (uint64_t i = 0; i < value_count; ++i) {
+         //  Subsequent frames in message contain event values
+         zmq_msg_init (&msg);
+@@ -249,8 +255,8 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_,
+         TEST_ASSERT_TRUE (zmq_msg_more (&msg));
+         TEST_ASSERT_EQUAL_UINT (sizeof (uint64_t), zmq_msg_size (&msg));
+ 
+-        if (value_ && value_ + i)
+-            memcpy (value_ + i, zmq_msg_data (&msg), sizeof (*value_));
++        if (value_ && *value_)
++            memcpy (&(*value_)[i], zmq_msg_data (&msg), sizeof (uint64_t));
+         zmq_msg_close (&msg);
+     }
+ 
+@@ -266,7 +272,7 @@ static int64_t get_monitor_event_internal_v2 (void *monitor_,
+ }
+ 
+ static int64_t get_monitor_event_with_timeout_v2 (void *monitor_,
+-                                                  uint64_t *value_,
++                                                  uint64_t **value_,
+                                                   char **local_address_,
+                                                   char **remote_address_,
+                                                   int timeout_)
+@@ -299,7 +305,7 @@ static int64_t get_monitor_event_with_timeout_v2 (void *monitor_,
+ }
+ 
+ int64_t get_monitor_event_v2 (void *monitor_,
+-                              uint64_t *value_,
++                              uint64_t **value_,
+                               char **local_address_,
+                               char **remote_address_)
+ {
+diff --git a/tests/testutil_monitoring.hpp b/tests/testutil_monitoring.hpp
+index a69db29015..eb6817d3c1 100644
+--- a/tests/testutil_monitoring.hpp
++++ b/tests/testutil_monitoring.hpp
+@@ -67,7 +67,7 @@ int expect_monitor_event_multiple (void *server_mon_,
+                                    bool optional_ = false);
+ 
+ int64_t get_monitor_event_v2 (void *monitor_,
+-                              uint64_t *value_,
++                              uint64_t **value_,
+                               char **local_address_,
+                               char **remote_address_);
+ 
+