From 5af39119a27a587d47db8709a5a872f12bba9219 Mon Sep 17 00:00:00 2001 From: Ercan Ersoy Date: Wed, 8 Apr 2020 09:45:39 +0300 Subject: [PATCH 1/4] Fix variable scope warning on jsmn.h This warning has been founded by using Cppcheck 1.86. Signed-off-by: Ercan Ersoy --- jsmn.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jsmn.h b/jsmn.h index 3178dcc9..4ca62a59 100644 --- a/jsmn.h +++ b/jsmn.h @@ -21,6 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ + + /* Fixed variable scope warning by Ercan Ersoy. */ + #ifndef JSMN_H #define JSMN_H @@ -268,7 +271,9 @@ static int jsmn_parse_string(jsmn_parser *parser, const char *js, JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, jsmntok_t *tokens, const unsigned int num_tokens) { int r; +#ifndef JSMN_PARENT_LINKS int i; +#endif jsmntok_t *token; int count = parser->toknext; From b0f644e69b79fdf87d23302e27a457dfbf92a0b4 Mon Sep 17 00:00:00 2001 From: Ercan Ersoy Date: Wed, 8 Apr 2020 09:55:13 +0300 Subject: [PATCH 2/4] Fix variable scope warnings on some test files These warnings have been founded by using Cppcheck 1.86. Signed-off-by: Ercan Ersoy --- test/tests.c | 11 +++++------ test/testutil.h | 4 +++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/test/tests.c b/test/tests.c index d8a4d922..bb24f35d 100644 --- a/test/tests.c +++ b/test/tests.c @@ -1,3 +1,5 @@ + /* Fixed variable scope warnings by Ercan Ersoy. */ + #include #include #include @@ -97,7 +99,6 @@ int test_string(void) { } int test_partial_string(void) { - int r; unsigned long i; jsmn_parser p; jsmntok_t tok[5]; @@ -105,7 +106,7 @@ int test_partial_string(void) { jsmn_init(&p); for (i = 1; i <= strlen(js); i++) { - r = jsmn_parse(&p, js, i, tok, sizeof(tok) / sizeof(tok[0])); + int r = jsmn_parse(&p, js, i, tok, sizeof(tok) / sizeof(tok[0])); if (i == strlen(js)) { check(r == 5); check(tokeq(js, tok, 5, JSMN_OBJECT, -1, -1, 2, JSMN_STRING, "x", 1, @@ -120,7 +121,6 @@ int test_partial_string(void) { int test_partial_array(void) { #ifdef JSMN_STRICT - int r; unsigned long i; jsmn_parser p; jsmntok_t tok[10]; @@ -128,7 +128,7 @@ int test_partial_array(void) { jsmn_init(&p); for (i = 1; i <= strlen(js); i++) { - r = jsmn_parse(&p, js, i, tok, sizeof(tok) / sizeof(tok[0])); + int r = jsmn_parse(&p, js, i, tok, sizeof(tok) / sizeof(tok[0])); if (i == strlen(js)) { check(r == 6); check(tokeq(js, tok, 6, JSMN_ARRAY, -1, -1, 3, JSMN_PRIMITIVE, "1", @@ -144,7 +144,6 @@ int test_partial_array(void) { int test_array_nomem(void) { int i; - int r; jsmn_parser p; jsmntok_t toksmall[10], toklarge[10]; const char *js; @@ -155,7 +154,7 @@ int test_array_nomem(void) { jsmn_init(&p); memset(toksmall, 0, sizeof(toksmall)); memset(toklarge, 0, sizeof(toklarge)); - r = jsmn_parse(&p, js, strlen(js), toksmall, i); + int r = jsmn_parse(&p, js, strlen(js), toksmall, i); check(r == JSMN_ERROR_NOMEM); memcpy(toklarge, toksmall, sizeof(toksmall)); diff --git a/test/testutil.h b/test/testutil.h index bdee1393..ffb61b09 100644 --- a/test/testutil.h +++ b/test/testutil.h @@ -1,3 +1,5 @@ + /* Fixed variable scope warning by Ercan Ersoy. */ + #ifndef __TEST_UTIL_H__ #define __TEST_UTIL_H__ @@ -73,7 +75,6 @@ static int tokeq(const char *s, jsmntok_t *tokens, unsigned long numtok, ...) { static int parse(const char *s, int status, unsigned long numtok, ...) { int r; int ok = 1; - va_list args; jsmn_parser p; jsmntok_t *t = malloc(numtok * sizeof(jsmntok_t)); @@ -85,6 +86,7 @@ static int parse(const char *s, int status, unsigned long numtok, ...) { } if (status >= 0) { + va_list args; va_start(args, numtok); ok = vtokeq(s, t, numtok, args); va_end(args); From 737c0ccd94d6c23cffdaa7ed90ffa03a3d8db840 Mon Sep 17 00:00:00 2001 From: Ercan Ersoy Date: Wed, 8 Apr 2020 10:19:03 +0300 Subject: [PATCH 3/4] Fix undeclared identifier error on jsmn.h Signed-off-by: Ercan Ersoy --- jsmn.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsmn.h b/jsmn.h index 4ca62a59..d8e278bc 100644 --- a/jsmn.h +++ b/jsmn.h @@ -446,7 +446,7 @@ JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, } if (tokens != NULL) { - for (i = parser->toknext - 1; i >= 0; i--) { + for (int i = parser->toknext - 1; i >= 0; i--) { /* Unmatched opened object or array */ if (tokens[i].start != -1 && tokens[i].end == -1) { return JSMN_ERROR_PART; From b7b03c6fb967791bcd2c6e93348c22dc9d40f2ce Mon Sep 17 00:00:00 2001 From: Ercan Ersoy Date: Wed, 8 Apr 2020 17:18:39 +0300 Subject: [PATCH 4/4] Fix C89 compability - Deleted unconditional integer variable definition on for loop. It is unneeded except JSMN_PARENT_LINKS option. - Added conditional integer variable definition before for loop. Signed-off-by: Ercan Ersoy --- jsmn.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jsmn.h b/jsmn.h index d8e278bc..7e9fc017 100644 --- a/jsmn.h +++ b/jsmn.h @@ -446,7 +446,10 @@ JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, } if (tokens != NULL) { - for (int i = parser->toknext - 1; i >= 0; i--) { +#ifdef JSMN_PARENT_LINKS + int i; +#endif + for (i = parser->toknext - 1; i >= 0; i--) { /* Unmatched opened object or array */ if (tokens[i].start != -1 && tokens[i].end == -1) { return JSMN_ERROR_PART;