From 17c244e644c6654d99bd1391bd999c4ab5f5cedc Mon Sep 17 00:00:00 2001 From: renu555 Date: Wed, 2 Jul 2014 09:19:00 +0530 Subject: [PATCH 1/3] Fixing unreachable condition. if (!isMultiLine) at line 563 suggests that isMultiline is 0 when if takes true branch. So the condition && at line 571 will always be false. Also at line 568 !isMultiline in loop conditional check suggests that it depends only on one condition i.e. index = rightMargin_; @@ -568,7 +568,7 @@ bool StyledStreamWriter::isMultineArray(const Value &value) { for (int index = 0; index < size && !isMultiLine; ++index) { writeValue(value[index]); lineLength += int(childValues_[index].length()); - isMultiLine = isMultiLine && hasCommentForValue(value[index]); + isMultiLine = isMultiLine || hasCommentForValue(value[index]); } addChildValues_ = false; isMultiLine = isMultiLine || lineLength >= rightMargin_; From 66b77384d89fa4aa277a7ee37ed56d1b54468d21 Mon Sep 17 00:00:00 2001 From: renu555 Date: Wed, 2 Jul 2014 14:23:54 +0530 Subject: [PATCH 2/3] Fix dead code scenario. Changes explained --- src/lib_json/json_writer.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index da68f1b..52f6e21 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -344,7 +344,6 @@ bool StyledWriter::isMultineArray(const Value &value) { for (int index = 0; index < size && !isMultiLine; ++index) { writeValue(value[index]); lineLength += int(childValues_[index].length()); - isMultiLine = isMultiLine || hasCommentForValue(value[index]); } addChildValues_ = false; isMultiLine = isMultiLine || lineLength >= rightMargin_; @@ -568,7 +567,6 @@ bool StyledStreamWriter::isMultineArray(const Value &value) { for (int index = 0; index < size && !isMultiLine; ++index) { writeValue(value[index]); lineLength += int(childValues_[index].length()); - isMultiLine = isMultiLine || hasCommentForValue(value[index]); } addChildValues_ = false; isMultiLine = isMultiLine || lineLength >= rightMargin_; From 41b79398a3352f846cf298c7a223ac767a80dcb2 Mon Sep 17 00:00:00 2001 From: renu555 Date: Wed, 2 Jul 2014 14:33:37 +0530 Subject: [PATCH 3/3] Always true condition. for (int index = 0; index < size && !isMultiLine; ++index) In addition to dead code, in the above if condition checking to !isMultiLine is of no use as it will be always true and hence "for" depends only on condition [index < size.] The mentioned test case works fine in this case also. --- src/lib_json/json_writer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index 52f6e21..52ecf3e 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -341,7 +341,7 @@ bool StyledWriter::isMultineArray(const Value &value) { childValues_.reserve(size); addChildValues_ = true; int lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' - for (int index = 0; index < size && !isMultiLine; ++index) { + for (int index = 0; index < size; ++index) { writeValue(value[index]); lineLength += int(childValues_[index].length()); } @@ -564,7 +564,7 @@ bool StyledStreamWriter::isMultineArray(const Value &value) { childValues_.reserve(size); addChildValues_ = true; int lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' - for (int index = 0; index < size && !isMultiLine; ++index) { + for (int index = 0; index < size; ++index) { writeValue(value[index]); lineLength += int(childValues_[index].length()); }