Browse Source

2003-03-11 Alan Tam <[email protected]>

        * XslTransform.cs: Fixed a bug when no args is passed

svn path=/trunk/mcs/; revision=12406
Alan Tam 23 years ago
parent
commit
ca5e24f1a6

+ 4 - 0
mcs/class/System.XML/System.Xml.Xsl/ChangeLog

@@ -1,3 +1,7 @@
+2003-03-10  Alan Tam <[email protected]>
+
+	* XslTransform.cs: Fixed a bug when no args is passed
+
 2003-03-10  Alan Tam <[email protected]>
 
 	* XslTransform.cs: Implemented boolean, number and string parameters.

+ 30 - 24
mcs/class/System.XML/System.Xml.Xsl/XslTransform.cs

@@ -257,19 +257,22 @@ namespace System.Xml.Xsl
 		public XmlReader Transform (XPathNavigator input, XsltArgumentList args)
 		{
 			IntPtr xmlInput = GetDocumentFromNavigator (input);
-			string[] argArr = new string[args.parameters.Count * 2 + 1];
-			int index = 0;
-			foreach (object key in args.parameters.Keys) {
-				argArr [index++] = key.ToString();
-				object value = args.parameters [key];
-				if (value is Boolean)
-					argArr [index++] = XmlConvert.ToString((bool) value); // FIXME: How to encode it for libxslt?
-				else if (value is Double)
-					argArr [index++] = XmlConvert.ToString((double) value); // FIXME: How to encode infinity's and Nan?
-				else
-					argArr [index++] = "'" + value.ToString() + "'"; // FIXME: How to encode "'"?
+			string[] argArr = null;
+                        if (args != null) {
+				argArr = new string[args.parameters.Count * 2 + 1];
+				int index = 0;
+				foreach (object key in args.parameters.Keys) {
+					argArr [index++] = key.ToString();
+					object value = args.parameters [key];
+					if (value is Boolean)
+						argArr [index++] = XmlConvert.ToString((bool) value); // FIXME: How to encode it for libxslt?
+					else if (value is Double)
+						argArr [index++] = XmlConvert.ToString((double) value); // FIXME: How to encode infinity's and Nan?
+					else
+						argArr [index++] = "'" + value.ToString() + "'"; // FIXME: How to encode "'"?
+				}
+				argArr[index] = null;
 			}
-			argArr[index] = null;
 			string xslOutputString = ApplyStylesheetAndGetString (xmlInput, argArr);
 			xmlFreeDoc (xmlInput);
 			Cleanup ();
@@ -326,19 +329,22 @@ namespace System.Xml.Xsl
 				throw new ArgumentNullException ("output");
 
 			IntPtr inputDoc = GetDocumentFromNavigator (input);
-			string[] argArr = new string[args.parameters.Count * 2 + 1];
-			int index = 0;
-			foreach (object key in args.parameters.Keys) {
-				argArr [index++] = key.ToString();
-				object value = args.parameters [key];
-				if (value is Boolean)
-					argArr [index++] = XmlConvert.ToString((bool) value); // FIXME: How to encode it for libxslt?
-				else if (value is Double)
-					argArr [index++] = XmlConvert.ToString((double) value); // FIXME: How to encode infinity's and Nan?
-				else
-					argArr [index++] = "'" + value.ToString() + "'"; // FIXME: How to encode "'"?
+			string[] argArr = null;
+                        if (args != null) {
+				argArr = new string[args.parameters.Count * 2 + 1];
+				int index = 0;
+				foreach (object key in args.parameters.Keys) {
+					argArr [index++] = key.ToString();
+					object value = args.parameters [key];
+					if (value is Boolean)
+						argArr [index++] = XmlConvert.ToString((bool) value); // FIXME: How to encode it for libxslt?
+					else if (value is Double)
+						argArr [index++] = XmlConvert.ToString((double) value); // FIXME: How to encode infinity's and Nan?
+					else
+						argArr [index++] = "'" + value.ToString() + "'"; // FIXME: How to encode "'"?
+				}
+				argArr[index] = null;
 			}
-			argArr[index] = null;
 			string transform = ApplyStylesheetAndGetString (inputDoc, argArr);
 			xmlFreeDoc (inputDoc);
 			Cleanup ();