diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/FormatDecode.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/FormatDecode.java
index 28cdf3b653c3..3de143f98144 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/FormatDecode.java
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/FormatDecode.java
@@ -248,7 +248,7 @@ class FormatDecode {
}
storeValidator(allowed, pos, parameters, argumentCount);
}
- if (i < formatString.length() - 1) {
+ if (i < formatString.length()) {
checkText(formatString.substring(i));
}
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/malformed_format_string/MalformedFormatString.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/malformed_format_string/MalformedFormatString.java
index ee50bbfe8df2..951cd1c10cdb 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/malformed_format_string/MalformedFormatString.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/malformed_format_string/MalformedFormatString.java
@@ -7,16 +7,15 @@ import java.util.Formattable;
public class MalformedFormatString {
- public void foo()
- {
- String.format("%", 3.0);
- System.out.printf("%", 3.0);
+ public void foo() {
+ String.format("%%", 3.0);
+ System.out.printf("%s", 3.0, 2.0);
System.out.printf("%q", 3.0);
System.out.printf("%d", 3.0);
System.out.printf(new Locale(""),"%d%s", 3.0, "foo");
}
- public static void main(String[] args) {
+ public static void main(String[] args) {
String local = "hmm";
String good = String.format("%s %s", 1, 2); // this is valid according to the inspector (correct)
@@ -60,6 +59,7 @@ public class MalformedFormatString {
void badStrings() {
// bad format specifier
String.format("%) %n");
+ String.format("%d%", 1);
// flags on newline not allowed
String.format("%(n");