aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2011-12-19 11:39:48 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-12-19 11:39:48 -0800
commit6e13c56a19f3994f8b710776e16b728ffb882051 (patch)
treee11acc3b516c5b21fc2f825ddc305fa605fe89dc
parent3d429cce90231d345fac172097223f3c8dec25d3 (diff)
parentc563d4c4a574eb7884307a6be2e691188f6f6520 (diff)
downloadsdk-6e13c56a19f3994f8b710776e16b728ffb882051.zip
sdk-6e13c56a19f3994f8b710776e16b728ffb882051.tar.gz
sdk-6e13c56a19f3994f8b710776e16b728ffb882051.tar.bz2
Merge "Handle lint input files with line ending errors"
-rw-r--r--lint/cli/src/com/android/tools/lint/PositionXmlParser.java7
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/PositionXmlParserTest.java22
2 files changed, 28 insertions, 1 deletions
diff --git a/lint/cli/src/com/android/tools/lint/PositionXmlParser.java b/lint/cli/src/com/android/tools/lint/PositionXmlParser.java
index 0515993..c6c4574 100644
--- a/lint/cli/src/com/android/tools/lint/PositionXmlParser.java
+++ b/lint/cli/src/com/android/tools/lint/PositionXmlParser.java
@@ -300,7 +300,12 @@ public class PositionXmlParser implements IDomParser {
// numbers
while (mCurrentLine < line) {
char c = mXml.charAt(mCurrentOffset);
- if (c == '\n') {
+ if (c == '\r' && mCurrentOffset < mXml.length() - 1) {
+ if (mXml.charAt(mCurrentOffset + 1) != '\n') {
+ mCurrentLine++;
+ mCurrentColumn = 0;
+ }
+ } else if (c == '\n') {
mCurrentLine++;
mCurrentColumn = 0;
} else {
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/PositionXmlParserTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/PositionXmlParserTest.java
index 7c47ceb..1c78c44 100644
--- a/lint/libs/lint_checks/tests/src/com/android/tools/lint/PositionXmlParserTest.java
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/PositionXmlParserTest.java
@@ -123,4 +123,26 @@ public class PositionXmlParserTest extends TestCase {
file.delete();
}
+
+ public void testLineEndings() throws Exception {
+ // Test for http://code.google.com/p/android/issues/detail?id=22925
+ String xml =
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" +
+ "<LinearLayout>\r\n" +
+ "\r" +
+ "<LinearLayout></LinearLayout>\r\n" +
+ "</LinearLayout>\r\n";
+ PositionXmlParser parser = new PositionXmlParser();
+ File file = File.createTempFile("parsertest2", ".xml");
+ Writer fw = new BufferedWriter(new FileWriter(file));
+ fw.write(xml);
+ fw.close();
+ Project project = new Project(null, file.getParentFile(), file.getParentFile());
+ XmlContext context = new XmlContext(new Main(), project, file,
+ EnumSet.of(Scope.RESOURCE_FILE));
+ Document document = parser.parseXml(context);
+ assertNotNull(document);
+
+ file.delete();
+ }
}