diff --git a/CHANGELOG.md b/CHANGELOG.md index 73c76156..6bd81011 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.10.6] - Unreleased + +### Fixed +- #996: Ensure COS commands execute in exec under a dedicated, isolated context + ## [0.10.5] - 2026-01-15 ### Added diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index a9392916..2b62aa8f 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -983,8 +983,7 @@ ClassMethod ShellInternal( } elseif (tCommandInfo = "load") { do ..Load(.tCommandInfo) } elseif (tCommandInfo = "exec") { - write ! - xecute tCommandInfo("parameters","expression") + do ..ExecuteCOS(.tCommandInfo) } elseif (tCommandInfo = "install") { do ..Install(.tCommandInfo) } elseif (tCommandInfo = "reinstall") { @@ -2218,6 +2217,13 @@ ClassMethod Load( $$$ThrowOnError(log.Finalize($$$OK, devMode)) } +ClassMethod ExecuteCOS(ByRef commandInfo) +{ + new $namespace + write ! + xecute commandInfo("parameters","expression") +} + ClassMethod LoadInternal( ByRef pCommandInfo, pLog As %IPM.General.AbstractHistory) [ Internal ]