[packages/cyrus-imapd] upstream fixes for compatibility with perl 5.36

atler atler at pld-linux.org
Tue Aug 23 00:34:41 CEST 2022


commit f9c4d2fcb99a5ed566cf9f2fbe6b4ba7e46d9cb3
Author: Jan Palus <atler at pld-linux.org>
Date:   Tue Aug 23 00:33:53 2022 +0200

    upstream fixes for compatibility with perl 5.36

 assert.patch     | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 cyrus-imapd.spec |   2 +
 2 files changed, 133 insertions(+)
---
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index 2aa5654..f665651 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -41,6 +41,7 @@ Patch2:		%{name}-clamav-0.101.patch
 Patch3:		%{name}-sphinx3.patch
 Patch4:		openssl3.patch
 Patch5:		sphinx.patch
+Patch6:		assert.patch
 URL:		http://www.cyrusimap.org/
 BuildRequires:	autoconf >= 2.63
 BuildRequires:	automake
@@ -209,6 +210,7 @@ Perlowy interfejs do biblioteki cyrus-imapd.
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
 
 cp -p %{SOURCE1} %{SOURCE2} %{SOURCE4} %{SOURCE5} .
 
diff --git a/assert.patch b/assert.patch
new file mode 100644
index 0000000..0094e51
--- /dev/null
+++ b/assert.patch
@@ -0,0 +1,131 @@
+From e6c8208a38cfcbe21209965f9793e8d0558a7294 Mon Sep 17 00:00:00 2001
+From: ellie timoney <ellie at fastmail.com>
+Date: Fri, 17 Jun 2022 14:12:09 +1000
+Subject: [PATCH 1/2] assert: assert() must be an expression, not a statement
+
+Note that while this is now syntactically compatible with the
+C standard assert macro(), it is still not semantically compatible.
+
+Specifically, the C standard assert() macro can be compiled out
+entirely by defining NDEBUG during compilation, and thus is a
+debugging aid only.
+
+Ours cannot be compiled out, and therefore can be relied upon as
+a run-time safety -- which we do, extensively!
+---
+ lib/assert.h | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/lib/assert.h b/lib/assert.h
+index d7e251245b..1be6c51479 100644
+--- a/lib/assert.h
++++ b/lib/assert.h
+@@ -43,11 +43,11 @@
+ #ifndef INCLUDED_ASSERT_H
+ #define INCLUDED_ASSERT_H
+ 
+-#ifdef __STDC__
+-#define assert(ex)      {if (!(ex))assertionfailed(__FILE__, __LINE__, #ex);}
+ void assertionfailed(const char *file, int line, const char *expr);
+-#else
+-#define assert(ex)      {if (!(ex))assertionfailed(__FILE__, __LINE__, (char*)0);}
+-#endif
++
++#define assert(expr)                                                \
++    ((expr)                                                         \
++     ? (void)(0)                                                    \
++     : assertionfailed(__FILE__, __LINE__, #expr))
+ 
+ #endif /* INCLUDED_ASSERT_H */
+
+From 30472acc9f6a899a143590d01989f6cbde434ff5 Mon Sep 17 00:00:00 2001
+From: ellie timoney <ellie at fastmail.com>
+Date: Fri, 17 Jun 2022 14:18:33 +1000
+Subject: [PATCH 2/2] misc: fix missing semicolons
+
+bad behaviour that was enabled by the bad assert() definition... /sigh
+---
+ imap/mailbox.c |  2 +-
+ imap/message.c | 16 ++++++++--------
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/imap/mailbox.c b/imap/mailbox.c
+index 37014400e2..c427a9280f 100644
+--- a/imap/mailbox.c
++++ b/imap/mailbox.c
+@@ -4492,7 +4492,7 @@ EXPORTED int mailbox_append_index_record(struct mailbox *mailbox,
+     assert(mailbox_index_islocked(mailbox, 1));
+ 
+     /* Append MUST be a higher UID than any we've yet seen */
+-    assert(record->uid > mailbox->i.last_uid)
++    assert(record->uid > mailbox->i.last_uid);
+ 
+     /* Append MUST have a message with data */
+     assert(record->size);
+diff --git a/imap/message.c b/imap/message.c
+index 37146c2beb..0db52a6cf0 100644
+--- a/imap/message.c
++++ b/imap/message.c
+@@ -5070,7 +5070,7 @@ EXPORTED int message_get_priority(message_t *m, struct buf *buf)
+ 
+ EXPORTED const struct index_record *msg_record(const message_t *m)
+ {
+-    assert(!message_need(m, M_RECORD))
++    assert(!message_need(m, M_RECORD));
+     return &m->record;
+ }
+ 
+@@ -5096,7 +5096,7 @@ EXPORTED int message_get_size(message_t *m, uint32_t *sizep)
+ 
+ EXPORTED uint32_t msg_size(const message_t *m)
+ {
+-    assert(!message_need(m, M_RECORD))
++    assert(!message_need(m, M_RECORD));
+     return m->record.size;
+ }
+ 
+@@ -5110,7 +5110,7 @@ EXPORTED int message_get_uid(message_t *m, uint32_t *uidp)
+ 
+ EXPORTED uint32_t msg_uid(const message_t *m)
+ {
+-    assert(!message_need(m, M_RECORD))
++    assert(!message_need(m, M_RECORD));
+     return m->record.uid;
+ }
+ 
+@@ -5124,7 +5124,7 @@ EXPORTED int message_get_cid(message_t *m, conversation_id_t *cidp)
+ 
+ EXPORTED conversation_id_t msg_cid(const message_t *m)
+ {
+-    assert(!message_need(m, M_RECORD))
++    assert(!message_need(m, M_RECORD));
+     return m->record.cid;
+ }
+ 
+@@ -5138,7 +5138,7 @@ EXPORTED int message_get_modseq(message_t *m, modseq_t *modseqp)
+ 
+ EXPORTED modseq_t msg_modseq(const message_t *m)
+ {
+-    assert(!message_need(m, M_RECORD))
++    assert(!message_need(m, M_RECORD));
+     return m->record.modseq;
+ }
+ 
+@@ -5152,7 +5152,7 @@ EXPORTED int message_get_msgno(message_t *m, uint32_t *msgnop)
+ 
+ EXPORTED int msg_msgno(const message_t *m)
+ {
+-    assert(!message_need(m, M_INDEX))
++    assert(!message_need(m, M_INDEX));
+     return m->msgno;
+ }
+ 
+@@ -5174,7 +5174,7 @@ EXPORTED int message_get_guid(message_t *m, const struct message_guid **guidp)
+ 
+ EXPORTED const struct message_guid *msg_guid(const message_t *m)
+ {
+-    assert(!message_need(m, M_RECORD))
++    assert(!message_need(m, M_RECORD));
+     return &m->record.guid;
+ }
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/cyrus-imapd.git/commitdiff/f9c4d2fcb99a5ed566cf9f2fbe6b4ba7e46d9cb3



More information about the pld-cvs-commit mailing list