AAPT2: Do not interpret %n as a format specifier in string resources

%n is a special value marking a platform independent newline and is
not to be considered a format argument.

Bug: 37132275
Test: make aapt2_tests
Change-Id: I806521e44afe20004344dee9f18ecee6cc7086ea
This commit is contained in:
Adam Lesinski
2017-06-02 16:32:37 -07:00
parent 63c5c9462a
commit b9f0548341
2 changed files with 6 additions and 1 deletions

View File

@@ -843,4 +843,9 @@ TEST_F(ResourceParserTest, ParseElementWithNoValue) {
EXPECT_THAT(*str->value, Eq(""));
}
TEST_F(ResourceParserTest, ParsePlatformIndependentNewline) {
std::string input = R"(<string name="foo">%1$s %n %2$s</string>)";
ASSERT_TRUE(TestParse(input));
}
} // namespace aapt

View File

@@ -203,7 +203,7 @@ bool VerifyJavaStringFormat(const StringPiece& str) {
if (*c == '%' && c + 1 < end) {
c++;
if (*c == '%') {
if (*c == '%' || *c == 'n') {
c++;
continue;
}