<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/a5227fa90e11126c075e23e2302c23bf05d54682">https://github.com/macports/macports-base/commit/a5227fa90e11126c075e23e2302c23bf05d54682</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 a5227fa90 portindex: ensure mutex is unlocked on error
</span>a5227fa90 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit a5227fa90e11126c075e23e2302c23bf05d54682
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Nov 1 01:17:26 2022 +1100
<span style='display:block; white-space:pre;color:#404040;'> portindex: ensure mutex is unlocked on error
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Also adjust status code handling a bit.
</span>---
src/port/portindex.tcl | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port/portindex.tcl b/src/port/portindex.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 74910a3da..0a0fe6a4c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port/portindex.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port/portindex.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -46,12 +46,15 @@ package require Thread
</span> proc _read_index {idx} {
set offset $::qindex($idx)
thread::mutex lock [tsv::get PortIndex mutex]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- seek $::oldfd $offset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gets $::oldfd in_line
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ seek $::oldfd $offset
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gets $::oldfd in_line
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set len [lindex $in_line 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set out_line [read $::oldfd [expr {$len - 1}]]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- thread::mutex unlock [tsv::get PortIndex mutex]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set len [lindex $in_line 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set out_line [read $::oldfd [expr {$len - 1}]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } finally {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ thread::mutex unlock [tsv::get PortIndex mutex]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> set name [lindex $in_line 0]
return [list $name $len $out_line]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -115,9 +118,10 @@ proc pindex {portdir {subport {}}} {
</span> set tsv_varname ${portdir}/${subport}
set is_subport 1
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set absportdir [file join $::directory $portdir]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set portfile [file join $absportdir Portfile]
</span> try {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ tsv::set $tsv_varname status 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set absportdir [file join $::directory $portdir]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set portfile [file join $absportdir Portfile]
</span> if {$is_subport} {
set qname [string tolower $subport]
} else {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -179,11 +183,11 @@ proc pindex {portdir {subport {}}} {
</span> } else {
puts stderr "Failed to parse file $portdir/Portfile: $eMessage"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- tsv::set $tsv_varname status 1
</span> return
}
tsv::set $tsv_varname status 0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ return
</span> } trap {POSIX SIG SIGINT} {} {
puts stderr "SIGINT received, terminating."
tsv::set $tsv_varname status 99
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -237,7 +241,7 @@ proc handle_completed_jobs {} {
</span> } elseif {$status == 1} {
incr ::stats(failed)
incr ::stats(total)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {$status == 0 || $status == -1} {
</span> # queue jobs for subports
if {[tsv::exists $portdir subports]} {
foreach subport [tsv::get $portdir subports] {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -256,6 +260,8 @@ proc handle_completed_jobs {} {
</span> }
}
_write_index {*}[tsv::get $portdir output]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error "Unknown status for ${portdir}: $status"
</span> }
tsv::unset $portdir
}
</pre><pre style='margin:0'>
</pre>