basic/qa/cppunit/test_scanner.cxx | 17 +++++++++++++++++ basic/source/comp/scanner.cxx | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-)
New commits: commit cc17346d682d85b6c083d76cae2d55dcc022e58f Author: Andreas Heinisch <andreas.heini...@yahoo.de> AuthorDate: Sun Sep 6 09:26:47 2020 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Mon Sep 7 10:11:42 2020 +0200 tdf#136032 - abort scan of a string beginning with a hashtag Abort scan of a string beginning with a hashtag, if a comma is found. Otherwise, the compiler raises a syntax error. If the string ends with a hashtag too, it will be parsed later checking for a date literal. Change-Id: I078a2302f5c65206367a00fbc584ffa7b9ede031 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102099 Tested-by: Mike Kaganski <mike.kagan...@collabora.com> Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> (cherry picked from commit 11292d1cc405e7c3b9e1f374cc7581a63a54b994) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101973 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/basic/qa/cppunit/test_scanner.cxx b/basic/qa/cppunit/test_scanner.cxx index f1cae3fcd492..068006128b7c 100644 --- a/basic/qa/cppunit/test_scanner.cxx +++ b/basic/qa/cppunit/test_scanner.cxx @@ -46,6 +46,7 @@ namespace void testDataType(); void testHexOctal(); void testTdf103104(); + void testTdf136032(); // Adds code needed to register the test suite CPPUNIT_TEST_SUITE(ScannerTest); @@ -62,6 +63,7 @@ namespace CPPUNIT_TEST(testDataType); CPPUNIT_TEST(testHexOctal); CPPUNIT_TEST(testTdf103104); + CPPUNIT_TEST(testTdf136032); // End of test suite definition CPPUNIT_TEST_SUITE_END(); @@ -1141,6 +1143,21 @@ namespace CPPUNIT_ASSERT_EQUAL(cr, symbols[3].text); } + void ScannerTest::testTdf136032() + { + std::vector<Symbol> symbols; + sal_Int32 errors; + + // tdf#136032 - abort scan of a string beginning with a hashtag, + // if a comma/whitespace is found. Otherwise, the compiler raises a syntax error. + symbols = getSymbols("Print #i,\"A#B\"", errors); + CPPUNIT_ASSERT_EQUAL(size_t(5), symbols.size()); + CPPUNIT_ASSERT_EQUAL(0u, static_cast<unsigned int>(errors)); + symbols = getSymbols("Print #i, \"A#B\"", errors); + CPPUNIT_ASSERT_EQUAL(size_t(5), symbols.size()); + CPPUNIT_ASSERT_EQUAL(0u, static_cast<unsigned int>(errors)); + } + // Put the test suite in the registry CPPUNIT_TEST_SUITE_REGISTRATION(ScannerTest); } // namespace diff --git a/basic/source/comp/scanner.cxx b/basic/source/comp/scanner.cxx index 5d93f5362510..0647a72edfff 100644 --- a/basic/source/comp/scanner.cxx +++ b/basic/source/comp/scanner.cxx @@ -251,7 +251,8 @@ bool SbiScanner::NextSym() do { nLineTempIdx++; - } while (nLineTempIdx < aLine.getLength() && !BasicCharClass::isWhitespace(aLine[nLineTempIdx]) && aLine[nLineTempIdx] != '#'); + } while (nLineTempIdx < aLine.getLength() && !BasicCharClass::isWhitespace(aLine[nLineTempIdx]) + && aLine[nLineTempIdx] != '#' && aLine[nLineTempIdx] != ','); // leave it if it is a date literal - it will be handled later if (nLineTempIdx >= aLine.getLength() || aLine[nLineTempIdx] != '#') { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits