 	{
 		var actualTarget:DisplayObject = DisplayObject(context.stringToObject(target));
 		var s:String = getDisplayListXML(actualTarget).toXMLString();
-		if (s !== xmlreader.data)
-		{
+		var t:String = xmlreader.data;
+		s = s.replace(/\r/g, "");
+		t = t.replace(/\r/g, "");		
+		if (s !== t)
+		{
+			differ(s, t);
+			
 			testResult.doFail ("compare returned" + compareVal, absolutePathResult(url) + ".bad.png");
 			
 			if (useRemoteDiffer)

	// scan entire display list, but only dump objects intersecting target
	protected function getDisplayListXML(target:DisplayObject):XML
	{
		var n:int;
		var i:int;
		var child:DisplayObject;
		var childXML:XML;
		

		}
		return xml;
	}

	private function differ(s:String, t:String):void
	{
		var sl:Array = s.split("\n");
		var tl:Array = t.split("\n");
		trace(sl.length, tl.length);
		var n:int = Math.max(sl.length, tl.length);
		for (var i:int = 0; i < n; i++)
		{
			var a:String = (i < sl.length) ? sl[i] : "";
			var b:String = (i < tl.length) ? tl[i] : "";
			if (a != b)
			{
				var c:String = "";
				var d:String = "";
				trace(i, "cur: ", a);
				trace(i, "xml: ", b);
				var m:int = Math.max(a.length, b.length);
				for (var j:int = 0; j < m; j++)
				{
					c += a.charCodeAt(j) + " ";
					d += b.charCodeAt(j) + " ";
				}
				trace(i, "cur: ", c);
				trace(i, "xml: ", d);
			}
		}
	}
}

}
