From ad89a90d12e20838bb121d71910df304afe2ac2e Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 24 Feb 2015 20:43:28 -0500 Subject: [PATCH 1/4] TW-1550 - TW-1550 _contexts helper-command (thanks to David Patrick). --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index ddb9c00c9..3af27b816 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ Renato Alves). - TW-1547 Recur column is always shown even if no recurring task is displayed (thanks to Renato Alves). +- TW-1550 _contexts helper-command (thanks to David Patrick). - Eliminated some code that is not UTF8-safe. - Removed pthreads linkage. - Implemented the context feature. From ea78200ae3c831aa8484ae0bfff1f7f02fda55db Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 24 Feb 2015 22:04:05 -0500 Subject: [PATCH 2/4] TW-1549 - TW-1549 task annotate hangs with specific text pattern (thanks to Alexandre de Verteuil). --- AUTHORS | 1 + ChangeLog | 2 ++ src/Lexer.cpp | 6 +++++ test/tw-1549.t | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100755 test/tw-1549.t diff --git a/AUTHORS b/AUTHORS index 2cd0d30b1..61e6b2bad 100644 --- a/AUTHORS +++ b/AUTHORS @@ -245,3 +245,4 @@ suggestions: Scott Carter Taisuke Hachimura Martin + Alexandre de Verteuil diff --git a/ChangeLog b/ChangeLog index 3af27b816..4e3bbf3fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,8 @@ Renato Alves). - TW-1547 Recur column is always shown even if no recurring task is displayed (thanks to Renato Alves). +- TW-1549 task annotate hangs with specific text pattern (thanks to Alexandre + de Verteuil). - TW-1550 _contexts helper-command (thanks to David Patrick). - Eliminated some code that is not UTF8-safe. - Removed pthreads linkage. diff --git a/src/Lexer.cpp b/src/Lexer.cpp index 371a3a4c8..5b1636077 100644 --- a/src/Lexer.cpp +++ b/src/Lexer.cpp @@ -387,6 +387,12 @@ bool Lexer::token (std::string& result, Type& type) result += utf8_character (_n0); shift (); } + else + { + result += utf8_character (hex_to_int (_n0, _n1, _n2, _n3)); + shift (); + type = quote ? typeString : typeIdentifier; + } break; case typeExponent: diff --git a/test/tw-1549.t b/test/tw-1549.t new file mode 100755 index 000000000..29879ae6e --- /dev/null +++ b/test/tw-1549.t @@ -0,0 +1,62 @@ +#!/usr/bin/env python2.7 +# -*- coding: utf-8 -*- +################################################################################ +## +## Copyright 2006 - 2015, Paul Beckingham, Federico Hernandez. +## +## Permission is hereby granted, free of charge, to any person obtaining a copy +## of this software and associated documentation files (the "Software"), to deal +## in the Software without restriction, including without limitation the rights +## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +## copies of the Software, and to permit persons to whom the Software is +## furnished to do so, subject to the following conditions: +## +## The above copyright notice and this permission notice shall be included +## in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +## OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +## THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +## SOFTWARE. +## +## http://www.opensource.org/licenses/mit-license.php +## +################################################################################ + +import sys +import os +import unittest + +# Ensure python finds the local simpletap module +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +from basetest import Task, TestCase + +class Test1549(TestCase): + def setUp(self): + self.t = Task() + + def test_lexer_state(self): + """ + The token '1e ' left the lexer in a bad state. + + +--------+ +----------+ +---------------------+ +--------------+ + | | -> |1 | -> |e | -> | | + |typeNone| |typeNumber| |typeExponentIndicator| |Missing 'else'| + +--------+ +----------+ +---------------------+ +--------------+ + + """ + + # This command will hang and therefore timeout in 2.4.1. + code, out, err = self.t(('add', '1e x')) + self.assertIn("Created task 1.", out) + + +if __name__ == "__main__": + from simpletap import TAPTestRunner + unittest.main(testRunner=TAPTestRunner()) + +# vim: ai sts=4 et sw=4 From 651ac3f1742f3f8ff4dc8a2c269a9aff04632a17 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 24 Feb 2015 22:35:18 -0500 Subject: [PATCH 3/4] Tw-1551 - TW-1551 Unable to get a UDA value from DOM (thanks to Tomas Babej). --- ChangeLog | 1 + src/DOM.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4e3bbf3fd..d8cd1b792 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ - TW-1549 task annotate hangs with specific text pattern (thanks to Alexandre de Verteuil). - TW-1550 _contexts helper-command (thanks to David Patrick). +- TW-1551 Unable to get a UDA value from DOM (thanks to Tomas Babej). - Eliminated some code that is not UTF8-safe. - Removed pthreads linkage. - Implemented the context feature. diff --git a/src/DOM.cpp b/src/DOM.cpp index e3647e351..4b0dffdb9 100644 --- a/src/DOM.cpp +++ b/src/DOM.cpp @@ -313,7 +313,7 @@ bool DOM::get (const std::string& name, const Task& task, Variant& value) Column* column = context.columns[canonical]; if (column) { - if (column->is_uda () && ! task.has (canonical)) + if (column->is_uda () && ! ref.has (canonical)) { value = Variant ("''"); return true; From aa8cd541424c2a0fd7c07580c204d8ee6152fdcb Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 24 Feb 2015 22:57:56 -0500 Subject: [PATCH 4/4] TW-1535 - TW-1535 move default listing-break from list to ls (thanks to David Patrick). --- ChangeLog | 1 + src/Config.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d8cd1b792..b01837b96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 2.4.2 () - +- TW-1535 move default listing-break from list to ls (thanks to David Patrick). - TW-1545 cc1plus: error: unrecognized command line option '-std=c++11' (thanks to Petteri). - TW-1546 column type due.remaining breaks colors on due tasks (thanks to diff --git a/src/Config.cpp b/src/Config.cpp index 4083878fc..f13bb9168 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -368,7 +368,7 @@ std::string Config::_defaults = "report.list.labels=ID,Active,Age,D,P,Project,Tags,R,Sch,Due,Until,Description,Urg\n" "report.list.columns=id,start.age,entry.age,depends.indicator,priority,project,tags,recur.indicator,scheduled.countdown,due,until.remaining,description.count,urgency\n" "report.list.filter=status:pending\n" - "report.list.sort=start-,due+,project+/,urgency-\n" + "report.list.sort=start-,due+,project+,urgency-\n" "\n" "report.ls.description=Few details of tasks\n" "report.ls.labels=ID,A,D,Project,Tags,R,Wait,S,Due,Until,Description\n"