<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/0977038f70c5298da00974a23a0b69692ce41a60">https://github.com/macports/macports-base/commit/0977038f70c5298da00974a23a0b69692ce41a60</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 0977038f70c5298da00974a23a0b69692ce41a60
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sun Jun 9 23:18:00 2024 +1000
<span style='display:block; white-space:pre;color:#404040;'> snapshot_get_last: don't crash with no snapshots
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Return the empty string instead.
</span>---
src/macports1.0/restore.tcl | 4 ++++
src/registry2.0/snapshot.c | 5 ++++-
2 files changed, 8 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/restore.tcl b/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index a2605aef6..25dd26159 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -73,6 +73,10 @@ namespace eval restore {
</span> } elseif {[dict exists $opts ports_restore_last]} {
# use the last snapshot
set snapshot [fetch_snapshot_last]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$snapshot eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "There are no snapshots to restore. You must run 'sudo port snapshot' first."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> } else {
# ask the user to select a snapshot
set snapshots [list_snapshots]
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/snapshot.c b/src/registry2.0/snapshot.c
</span><span style='display:block; white-space:pre;color:#808080;'>index c9109a8cf..e69675d84 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/snapshot.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/snapshot.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -123,7 +123,7 @@ static int snapshot_get_last(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]
</span> int limit = 1;
// 1 passed in reg_snapshot_list is to get the last '1' snapshot.
int snapshot_count = reg_snapshot_list(reg, &snapshots, limit, &error);
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if (snapshot_count >= 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (snapshot_count >= 1) {
</span> int retval;
Tcl_Obj* result;
if (snapshot_to_obj(interp, &result, snapshots[0], NULL, &error)) {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -134,6 +134,9 @@ static int snapshot_get_last(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]
</span> }
free(snapshots);
return retval;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else if (snapshot_count == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Tcl_ResetResult(interp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return TCL_OK;
</span> }
return registry_failed(interp, &error);
}
</pre><pre style='margin:0'>
</pre>