Skip to content

Commit af381cc

Browse files
committed
Fix bug in xslt transform not resetting properly after failing to load one bad xslt stylesheet.
1 parent dc4e894 commit af381cc

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

src/XmlNotepad/AsyncXslt.cs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -252,21 +252,32 @@ async System.Threading.Tasks.Task InternalRunTransform()
252252
resolved = new Uri(_context.baseUri, this._context.xsltfilename);
253253
if (resolved != this._xsltUri || IsModified())
254254
{
255-
_xslt = new XslCompiledTransform();
256-
this._loaded = DateTime.Now;
257-
var settings = new XsltSettings(true, this._context.enableScripts);
258-
settings.EnableScript = _trustService.CanTrustUrl(resolved) == true;
259-
var rs = new XmlReaderSettings();
260-
rs.DtdProcessing = this._context.ignoreDTD ? DtdProcessing.Ignore : DtdProcessing.Parse;
261-
rs.XmlResolver = this._context.resolver;
262-
using (XmlReader r = XmlReader.Create(resolved.AbsoluteUri, rs))
255+
try
263256
{
264-
_xslt.Load(r, settings, this._context.resolver);
265-
}
257+
_xslt = new XslCompiledTransform();
258+
this._loaded = DateTime.Now;
259+
var settings = new XsltSettings(true, this._context.enableScripts);
260+
settings.EnableScript = _trustService.CanTrustUrl(resolved) == true;
261+
var rs = new XmlReaderSettings();
262+
rs.DtdProcessing = this._context.ignoreDTD ? DtdProcessing.Ignore : DtdProcessing.Parse;
263+
rs.XmlResolver = this._context.resolver;
264+
using (XmlReader r = XmlReader.Create(resolved.AbsoluteUri, rs))
265+
{
266+
_xslt.Load(r, settings, this._context.resolver);
267+
}
266268

267-
// the XSLT DOM is also handy to have around for GetOutputMethod
268-
this._xsltdoc = new XmlDocument();
269-
this._xsltdoc.Load(resolved.AbsoluteUri);
269+
// the XSLT DOM is also handy to have around for GetOutputMethod
270+
this._xsltdoc = new XmlDocument();
271+
this._xsltdoc.Load(resolved.AbsoluteUri);
272+
}
273+
catch (Exception)
274+
{
275+
// remember that this xslt is broken.
276+
this._xslt = null;
277+
this._xsltUri = null;
278+
this._xsltdoc = null;
279+
throw;
280+
}
270281
}
271282
transform = _xslt;
272283
this._usingDefaultXslt = false;

0 commit comments

Comments
 (0)