diff --git a/build/dummy/dummy.msbuildproj b/build/dummy/dummy.msbuildproj index a0a5277f52..3ada67aece 100644 --- a/build/dummy/dummy.msbuildproj +++ b/build/dummy/dummy.msbuildproj @@ -9,6 +9,7 @@ + diff --git a/build/update-cache.ps1 b/build/update-cache.ps1 index a323198be5..f91f988c61 100644 --- a/build/update-cache.ps1 +++ b/build/update-cache.ps1 @@ -13,7 +13,7 @@ $defaultArgs = "/p:VersionPrefix=$version,VersionSuffix=$suffix" ## Delete old nuget packages Write-Host -f green "Deleting '$version-$suffix' packages from '$packagesSource' ..." -@("Peachpie.Runtime", "Peachpie.Library", "Peachpie.Library.Scripting", "Peachpie.Library.MySql", "Peachpie.Library.MsSql", "Peachpie.Library.Graphics", "Peachpie.Library.Network", "Peachpie.Library.PDO", "Peachpie.Library.XmlDom", "Peachpie.App", "Peachpie.CodeAnalysis", "Peachpie.AspNetCore.Web", "Peachpie.RequestHandler", "Peachpie.AspNetCore.Mvc", "Peachpie.NET.Sdk", "Peachpie.Library.PDO.MySql", "Peachpie.Library.PDO.Sqlite", "Peachpie.Library.SqlSrv") | % { +@("Peachpie.Runtime", "Peachpie.Library", "Peachpie.Library.Scripting", "Peachpie.Library.MySql", "Peachpie.Library.MsSql", "Peachpie.Library.Graphics", "Peachpie.Library.Network", "Peachpie.Library.PDO", "Peachpie.Library.XmlDom", "Peachpie.App", "Peachpie.CodeAnalysis", "Peachpie.AspNetCore.Web", "Peachpie.RequestHandler", "Peachpie.AspNetCore.Mvc", "Peachpie.NET.Sdk", "Peachpie.Library.PDO.PgSQL", "Peachpie.Library.PDO.MySql", "Peachpie.Library.PDO.Sqlite", "Peachpie.Library.SqlSrv") | % { $installedFolder = "$packagesSource/$_/$version-$suffix" if (Test-Path $installedFolder) { Remove-Item -Recurse -Force $installedFolder diff --git a/src/Peachpie.Library.XmlDom/DOMNode.cs b/src/Peachpie.Library.XmlDom/DOMNode.cs index e3cb2bdb35..fc1b7e5bca 100644 --- a/src/Peachpie.Library.XmlDom/DOMNode.cs +++ b/src/Peachpie.Library.XmlDom/DOMNode.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Security.Cryptography.Xml; using System.Text; using System.Xml; using Pchp.Core; @@ -631,11 +633,19 @@ public PhpString C14N( PhpArray xpath = null, PhpArray ns_prefixes = null) { - var transform = new System.Security.Cryptography.Xml.XmlDsigC14NTransform(); - transform.LoadInput(XmlNode.GetXmlDocument()); - var stream = (System.IO.MemoryStream)transform.GetOutput(typeof(System.IO.Stream)); + XmlNodeReader reader = new XmlNodeReader(XmlNode); + Stream inputStream = new MemoryStream(); + XmlWriter writer = new XmlTextWriter(inputStream, Encoding.UTF8); - return new PhpString(stream.ToArray()); + writer.WriteNode(reader, false); + writer.Flush(); + + inputStream.Position = 0; + XmlDsigC14NTransform transform = new XmlDsigC14NTransform(); + transform.LoadInput(inputStream); + + System.IO.MemoryStream outputStream = (System.IO.MemoryStream)transform.GetOutput(typeof(System.IO.Stream)); + return new PhpString(outputStream.ToArray()); } /// diff --git a/src/Peachpie.Runtime/Operators.cs b/src/Peachpie.Runtime/Operators.cs index 33c4504d11..da0bd0c815 100644 --- a/src/Peachpie.Runtime/Operators.cs +++ b/src/Peachpie.Runtime/Operators.cs @@ -2411,8 +2411,13 @@ public static PhpValue Eval(Context ctx, PhpArray locals, object @this, RuntimeT }, code); - // - return script.Evaluate(ctx, locals, @this, self); + try { + return script.Evaluate(ctx, locals, @this, self); + + } catch (Pchp.Core.PhpFatalErrorException e) { + PhpException.Throw(PhpError.Warning, e.Message); + return false; + } } #endregion