瀏覽代碼

Fix possible NRE caused by null XmlResolver settings.

Atsushi Eno 13 年之前
父節點
當前提交
beefa7d320
共有 1 個文件被更改,包括 6 次插入3 次删除
  1. 6 3
      mcs/class/System.XML/System.Xml/XmlTextReader.cs

+ 6 - 3
mcs/class/System.XML/System.Xml/XmlTextReader.cs

@@ -166,7 +166,7 @@ namespace Mono.Xml2
 
 		Uri ResolveUri (string url)
 		{
-			return resolver.ResolveUri (null, url);
+			return resolver == null ? null : resolver.ResolveUri (null, url);
 		}
 
 		Stream GetStreamFromUrl (string url, out string absoluteUriString)
@@ -179,7 +179,7 @@ namespace Mono.Xml2
 #endif
 			Uri uri = ResolveUri (url);
 			absoluteUriString = uri != null ? uri.ToString () : String.Empty;
-			return resolver.GetEntity (uri, null, typeof (Stream)) as Stream;
+			return resolver == null ? null : resolver.GetEntity (uri, null, typeof (Stream)) as Stream;
 		}
 
 		#endregion
@@ -1183,7 +1183,10 @@ namespace Mono.Xml2
 				Uri uri = reader_uri;
 				reader_uri = null;
 				string uriString;
-				reader = new XmlStreamReader (GetStreamFromUrl (uri.ToString (), out uriString));
+				Stream stream = GetStreamFromUrl (uri.ToString (), out uriString);
+				if (stream == null)
+					return false;
+				reader = new XmlStreamReader (stream);
 			}
 			if (peekCharsLength < 0) {	// initialized buffer
 				peekCharsLength = reader.Read (peekChars, 0, peekChars.Length);