<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/a0898ce79cac9c782f0c4bafa8eb0d8cf806a9cf">https://github.com/macports/macports-base/commit/a0898ce79cac9c782f0c4bafa8eb0d8cf806a9cf</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 a0898ce7 Fix crash in restore_entry_list
</span>a0898ce7 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit a0898ce79cac9c782f0c4bafa8eb0d8cf806a9cf
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sun Jun 13 14:29:40 2021 +1000
<span style='display:block; white-space:pre;color:#404040;'> Fix crash in restore_entry_list
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/63079
</span>---
src/registry2.0/entry.c | 11 +++++++++++
1 file changed, 11 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/entry.c b/src/registry2.0/entry.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 987b065f..001d1169 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/entry.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/entry.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -146,6 +146,17 @@ static int entry_delete(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) {
</span> if (!reg_entry_delete(entry, &error)) {
return registry_failed(interp, &error);
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* We want to delete the command but not free the entry object,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ since we may want to restore it (delete_entry_list will free
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ it if the transaction is not rolled back). So remove the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ command's associated deleteProc first. The reg_entry_free
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ below will take care of it if there is no transaction in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ progress. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Tcl_CmdInfo info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (Tcl_GetCommandInfo(interp, Tcl_GetString(objv[2]), &info)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ info.deleteProc = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Tcl_SetCommandInfo(interp, Tcl_GetString(objv[2]), &info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> /* if there's a transaction going on, record this entry in a list so we
* can roll it back if necessary
*/
</pre><pre style='margin:0'>
</pre>