<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/d28bf24c7f754c2b49ff36eb57eb6aec4e687e5f">https://github.com/macports/macports-ports/commit/d28bf24c7f754c2b49ff36eb57eb6aec4e687e5f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new d28bf24c7f7 py27-pyobjc, py35-pyobjc: Fix crash on Catalina
</span>d28bf24c7f7 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit d28bf24c7f754c2b49ff36eb57eb6aec4e687e5f
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Mon Aug 24 04:52:03 2020 -0500

<span style='display:block; white-space:pre;color:#404040;'>    py27-pyobjc, py35-pyobjc: Fix crash on Catalina
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    AFAICT the root cause was that PyObjC wrote to a variable mapped to
</span><span style='display:block; white-space:pre;color:#404040;'>    read-only memory. Luck would have it that this particular write is
</span><span style='display:block; white-space:pre;color:#404040;'>    redundant, so we can “fix” the bug by checking whether the value would
</span><span style='display:block; white-space:pre;color:#404040;'>    change, and thus avoid the write — and crash.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Backported from d16123838f5fd089fbab17d93e9719f1c57ea126
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/59781
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Co-authored-by: Dan Villiom Podlaski Christiansen <danchr@macports.org>
</span>---
 python/py27-pyobjc/Portfile                            |  4 +++-
 python/py27-pyobjc/files/patch-method-signature.m.diff | 16 ++++++++++++++++
 python/py35-pyobjc/Portfile                            |  4 +++-
 python/py35-pyobjc/files/patch-method-signature.m.diff | 16 ++++++++++++++++
 4 files changed, 38 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py27-pyobjc/Portfile b/python/py27-pyobjc/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index b673b75fc49..dbddea2c6eb 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py27-pyobjc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py27-pyobjc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -25,7 +25,7 @@ long_description    The PyObjC project aims to provide a bridge between \
</span> homepage            https://pyobjc.readthedocs.io
 
 version             5.3
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            2
</span> 
 distname            pyobjc-core-${version}
 checksums           rmd160 6c2f3aa3d444bc5d577a3b59a116241374787587 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -40,6 +40,8 @@ depends_lib-append \
</span>                 port:libffi \
                 port:py${python.version}-setuptools
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-method-signature.m.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-patch {
     reinplace "s|use-system-libffi = 0|\\
 use-system-libffi = 1\\
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py27-pyobjc/files/patch-method-signature.m.diff b/python/py27-pyobjc/files/patch-method-signature.m.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..910d059399b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py27-pyobjc/files/patch-method-signature.m.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fix crash on Catalina.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/ronaldoussoren/pyobjc/pull/301
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/objc/method-signature.m.orig   2019-10-16 04:40:21.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/objc/method-signature.m        2020-08-24 04:40:33.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -631,7 +631,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             descr->alreadyRetained = YES;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (descr == NULL || (descr->tmpl && descr->alreadyRetained)) return -2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            descr->alreadyRetained = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // descr may be loaded into read-only memory, so only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // write if truly necessary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (descr->alreadyRetained)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                descr->alreadyRetained = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py35-pyobjc/Portfile b/python/py35-pyobjc/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index c2f07484d08..658e482945c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py35-pyobjc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py35-pyobjc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -25,7 +25,7 @@ long_description    The PyObjC project aims to provide a bridge between \
</span> homepage            https://pyobjc.readthedocs.io
 
 version             5.3
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            2
</span> 
 distname            pyobjc-core-${version}
 checksums           rmd160 6c2f3aa3d444bc5d577a3b59a116241374787587 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -40,6 +40,8 @@ depends_lib-append \
</span>                 port:libffi \
                 port:py${python.version}-setuptools
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-method-signature.m.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-patch {
     reinplace "s|use-system-libffi = 0|\\
 use-system-libffi = 1\\
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py35-pyobjc/files/patch-method-signature.m.diff b/python/py35-pyobjc/files/patch-method-signature.m.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..910d059399b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py35-pyobjc/files/patch-method-signature.m.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fix crash on Catalina.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/ronaldoussoren/pyobjc/pull/301
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/objc/method-signature.m.orig   2019-10-16 04:40:21.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/objc/method-signature.m        2020-08-24 04:40:33.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -631,7 +631,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             descr->alreadyRetained = YES;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (descr == NULL || (descr->tmpl && descr->alreadyRetained)) return -2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            descr->alreadyRetained = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // descr may be loaded into read-only memory, so only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // write if truly necessary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (descr->alreadyRetained)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                descr->alreadyRetained = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>