From 7ebe31e038c8195e1670024b7a4beab6dfefd8c7 Mon Sep 17 00:00:00 2001 From: Mau Magnaguagno Date: Thu, 16 Jun 2022 15:45:11 -0300 Subject: [PATCH 1/2] Simplify odd division by two in Parser#parse_quoted_column_value Division by two of odd ``n_quotes`` (integer >= 0) does not need to decrement one to generate the same result as even numbers. Division by two already removes the least significant bit that is being subtracted: (0bxxx1 - 1) / 2 => 0bxxx0 / 2 => 0bxxx. --- lib/csv/parser.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/csv/parser.rb b/lib/csv/parser.rb index 7fe5f0d3..63ba8b7b 100644 --- a/lib/csv/parser.rb +++ b/lib/csv/parser.rb @@ -1141,7 +1141,7 @@ def parse_quoted_column_value if (n_quotes % 2).zero? quotes[0, (n_quotes - 2) / 2] else - value = quotes[0, (n_quotes - 1) / 2] + value = quotes[0, n_quotes / 2] while true quoted_value = @scanner.scan_all(@quoted_value) value << quoted_value if quoted_value @@ -1165,11 +1165,9 @@ def parse_quoted_column_value n_quotes = quotes.size if n_quotes == 1 break - elsif (n_quotes % 2) == 1 - value << quotes[0, (n_quotes - 1) / 2] - break else value << quotes[0, n_quotes / 2] + break if n_quotes % 2 == 1 end end value From bedeb20bb8ccbfb3558fc18febd3f87999b92689 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Sat, 18 Jun 2022 22:38:02 +0900 Subject: [PATCH 2/2] Adjust style --- lib/csv/parser.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/csv/parser.rb b/lib/csv/parser.rb index 63ba8b7b..83ce1f96 100644 --- a/lib/csv/parser.rb +++ b/lib/csv/parser.rb @@ -1167,7 +1167,7 @@ def parse_quoted_column_value break else value << quotes[0, n_quotes / 2] - break if n_quotes % 2 == 1 + break if (n_quotes % 2) == 1 end end value