From ef4cb2bf7444f4b859fa61cfeb8dab9d749868ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Tokodi?= Date: Wed, 22 Nov 2023 11:36:45 +0100 Subject: [PATCH] Update cppcheck (#5108) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-enable cppcheck CI job Update cppcheck suppression list: The new version of cppcheck raises warnings for many potential issues that are guarded against, so those warnings have been supressed. Handle realloc failures: - jerry-ext/util/sources.c - jerry-port/common/jerry-port-io.c Refactor test-snapshot: move each test to separate functions like some others already were. Rename `handler` variables inside `main` of `test-api.c` as they shadowed the `handler` function in the same file. JerryScript-DCO-1.0-Signed-off-by: Máté Tokodi mate.tokodi@szteszoftver.hu --- .github/workflows/gh-actions.yml | 8 +- jerry-core/ecma/base/ecma-helpers-errol.c | 16 +- jerry-ext/handle-scope/handle-scope.c | 3 - jerry-ext/util/sources.c | 4 + jerry-port/common/jerry-port-io.c | 4 + tests/unit-core/test-api.c | 12 +- tests/unit-core/test-snapshot.c | 428 +++++++++++----------- tests/unit-core/test-to-integer.c | 6 +- tools/cppcheck/suppressions-list | 47 ++- 9 files changed, 293 insertions(+), 235 deletions(-) diff --git a/.github/workflows/gh-actions.yml b/.github/workflows/gh-actions.yml index 85a8d32a0..3977a5f95 100644 --- a/.github/workflows/gh-actions.yml +++ b/.github/workflows/gh-actions.yml @@ -17,8 +17,8 @@ jobs: python-version: '3.10' - run: sudo apt update # TODO: update checkers to current versions available in ubuntu 22.04 -# - run: sudo apt install clang-format-10 cppcheck python-serial - - run: sudo apt install pylint doxygen +# - run: sudo apt install clang-format-10 python-serial + - run: sudo apt install pylint doxygen cppcheck - run: $RUNNER --check-signed-off=gh-actions if: ${{ always() }} - run: $RUNNER --check-doxygen @@ -31,8 +31,8 @@ jobs: # if: ${{ always() }} - run: $RUNNER --check-pylint if: ${{ always() }} -# - run: $RUNNER --check-cppcheck -# if: ${{ always() }} + - run: $RUNNER --check-cppcheck + if: ${{ always() }} Linux_x86-64_Build_Correctness_Debugger_Tests: runs-on: ubuntu-latest diff --git a/jerry-core/ecma/base/ecma-helpers-errol.c b/jerry-core/ecma/base/ecma-helpers-errol.c index 62190f8ac..df5f63587 100644 --- a/jerry-core/ecma/base/ecma-helpers-errol.c +++ b/jerry-core/ecma/base/ecma-helpers-errol.c @@ -143,7 +143,7 @@ ecma_errol0_dtoa (double val, /**< ecma number */ int32_t *exp_p) /**< [out] exponent */ { double power_of_10 = 1.0; - int32_t exp = 1; + int32_t exponent = 1; /* normalize the midpoint */ ecma_high_prec_t mid; @@ -151,16 +151,16 @@ ecma_errol0_dtoa (double val, /**< ecma number */ mid.value = val; mid.offset = 0.0; - while (((mid.value > 10.0) || ((mid.value == 10.0) && (mid.offset >= 0.0))) && (exp < 308)) + while (((mid.value > 10.0) || ((mid.value == 10.0) && (mid.offset >= 0.0))) && (exponent < 308)) { - exp++; + exponent++; ecma_divide_high_prec_by_10 (&mid); power_of_10 /= 10.0; } - while (((mid.value < 1.0) || ((mid.value == 1.0) && (mid.offset < 0.0))) && (exp > -307)) + while (((mid.value < 1.0) || ((mid.value == 1.0) && (mid.offset < 0.0))) && (exponent > -307)) { - exp--; + exponent--; ecma_multiply_high_prec_by_10 (&mid); power_of_10 *= 10.0; } @@ -185,14 +185,14 @@ ecma_errol0_dtoa (double val, /**< ecma number */ while (high_bound.value > 10.0 || (high_bound.value == 10.0 && (high_bound.offset >= 0.0))) { - exp++; + exponent++; ecma_divide_high_prec_by_10 (&high_bound); ecma_divide_high_prec_by_10 (&low_bound); } while (high_bound.value < 1.0 || (high_bound.value == 1.0 && (high_bound.offset < 0.0))) { - exp--; + exponent--; ecma_multiply_high_prec_by_10 (&high_bound); ecma_multiply_high_prec_by_10 (&low_bound); } @@ -234,7 +234,7 @@ ecma_errol0_dtoa (double val, /**< ecma number */ double mdig = (high_bound.value + low_bound.value) / 2.0 + 0.5; *dst_p++ = (lit_utf8_byte_t) ('0' + (uint8_t) mdig); - *exp_p = exp; + *exp_p = exponent; return (lit_utf8_size_t) (dst_p - buffer_p); } /* ecma_errol0_dtoa */ diff --git a/jerry-ext/handle-scope/handle-scope.c b/jerry-ext/handle-scope/handle-scope.c index 517ceb8c6..bbf212265 100644 --- a/jerry-ext/handle-scope/handle-scope.c +++ b/jerry-ext/handle-scope/handle-scope.c @@ -254,10 +254,7 @@ jerryx_escape_handle_internal (jerryx_escapable_handle_scope scope, * Escape handle to parent scope */ *result = jerryx_handle_scope_add_handle_to (found_handle, parent); - } - if (should_promote) - { scope->escaped = true; } return jerryx_handle_scope_ok; diff --git a/jerry-ext/util/sources.c b/jerry-ext/util/sources.c index 30cbe56d1..dbd629ee7 100644 --- a/jerry-ext/util/sources.c +++ b/jerry-ext/util/sources.c @@ -146,6 +146,10 @@ jerryx_source_exec_stdin (void) jerry_size_t new_size = source_size + line_size; source_p = realloc (source_p, new_size); + if (source_p == NULL) + { + return jerry_throw_sz (JERRY_ERROR_COMMON, "Out of memory."); + } memcpy (source_p + source_size, line_p, line_size); jerry_port_line_free (line_p); diff --git a/jerry-port/common/jerry-port-io.c b/jerry-port/common/jerry-port-io.c index 593d74474..761c5a79e 100644 --- a/jerry-port/common/jerry-port-io.c +++ b/jerry-port/common/jerry-port-io.c @@ -71,6 +71,10 @@ jerry_port_line_read (jerry_size_t *out_size_p) { allocated += 64; line_p = realloc (line_p, allocated); + if (line_p == NULL) + { + jerry_port_fatal (JERRY_FATAL_OUT_OF_MEMORY); + } while (bytes < allocated - 1) { diff --git a/tests/unit-core/test-api.c b/tests/unit-core/test-api.c index a433a8a9f..6bdc0c4a6 100644 --- a/tests/unit-core/test-api.c +++ b/tests/unit-core/test-api.c @@ -709,12 +709,12 @@ main (void) if (jerry_feature_enabled (JERRY_FEATURE_PROXY)) { jerry_value_t target = jerry_object (); - jerry_value_t handler = jerry_object (); - jerry_value_t proxy = jerry_proxy (target, handler); + jerry_value_t proxy_handler = jerry_object (); + jerry_value_t proxy = jerry_proxy (target, proxy_handler); jerry_value_t obj_proto = jerry_eval ((jerry_char_t *) "Object.prototype", 16, JERRY_PARSE_NO_OPTS); jerry_value_free (target); - jerry_value_free (handler); + jerry_value_free (proxy_handler); proto_val = jerry_object_proto (proxy); TEST_ASSERT (!jerry_value_is_exception (proto_val)); TEST_ASSERT (proto_val == obj_proto); @@ -745,8 +745,8 @@ main (void) if (jerry_feature_enabled (JERRY_FEATURE_PROXY)) { jerry_value_t target = jerry_object (); - jerry_value_t handler = jerry_object (); - jerry_value_t proxy = jerry_proxy (target, handler); + jerry_value_t proxy_handler = jerry_object (); + jerry_value_t proxy = jerry_proxy (target, proxy_handler); new_proto = jerry_eval ((jerry_char_t *) "Function.prototype", 18, JERRY_PARSE_NO_OPTS); res = jerry_object_set_proto (proxy, new_proto); @@ -755,7 +755,7 @@ main (void) TEST_ASSERT (target_proto == new_proto); jerry_value_free (target); - jerry_value_free (handler); + jerry_value_free (proxy_handler); jerry_value_free (proxy); jerry_value_free (new_proto); jerry_value_free (target_proto); diff --git a/tests/unit-core/test-snapshot.c b/tests/unit-core/test-snapshot.c index e4451a7a8..4de459c1a 100644 --- a/tests/unit-core/test-snapshot.c +++ b/tests/unit-core/test-snapshot.c @@ -41,10 +41,227 @@ static const jerry_char_t *magic_strings[] = { (const jerry_char_t *) " ", */ static const jerry_length_t magic_string_lengths[] = { 1, 1, 1, 1, 4, 4, 6, 8 }; +static void +test_exec_snapshot (uint32_t *snapshot_p, size_t snapshot_size, uint32_t exec_snapshot_flags) +{ + char string_data[32]; + + jerry_init (JERRY_INIT_EMPTY); + + jerry_register_magic_strings (magic_strings, + sizeof (magic_string_lengths) / sizeof (jerry_length_t), + magic_string_lengths); + + jerry_value_t res = jerry_exec_snapshot (snapshot_p, snapshot_size, 0, exec_snapshot_flags, NULL); + + TEST_ASSERT (!jerry_value_is_exception (res)); + TEST_ASSERT (jerry_value_is_string (res)); + jerry_size_t sz = jerry_string_size (res, JERRY_ENCODING_CESU8); + TEST_ASSERT (sz == 20); + sz = jerry_string_to_buffer (res, JERRY_ENCODING_CESU8, (jerry_char_t *) string_data, sz); + TEST_ASSERT (sz == 20); + jerry_value_free (res); + TEST_ASSERT (!strncmp (string_data, "string from snapshot", (size_t) sz)); + + jerry_cleanup (); +} /* test_exec_snapshot */ + +static void +test_static_snapshot (void) +{ + if (jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_SAVE) && jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_EXEC)) + { + static uint32_t snapshot_buffer[SNAPSHOT_BUFFER_SIZE]; + const jerry_char_t code_to_snapshot[] = TEST_STRING_LITERAL ("function func(a, b, c) {" + " c = 'snapshot';" + " return arguments[0] + ' ' + b + ' ' + arguments[2];" + "};" + "func('string', 'from');"); + + jerry_init (JERRY_INIT_EMPTY); + jerry_register_magic_strings (magic_strings, + sizeof (magic_string_lengths) / sizeof (jerry_length_t), + magic_string_lengths); + + jerry_value_t parse_result = jerry_parse (code_to_snapshot, sizeof (code_to_snapshot) - 1, NULL); + TEST_ASSERT (!jerry_value_is_exception (parse_result)); + + jerry_value_t generate_result = + jerry_generate_snapshot (parse_result, JERRY_SNAPSHOT_SAVE_STATIC, snapshot_buffer, SNAPSHOT_BUFFER_SIZE); + jerry_value_free (parse_result); + + TEST_ASSERT (!jerry_value_is_exception (generate_result) && jerry_value_is_number (generate_result)); + + size_t snapshot_size = (size_t) jerry_value_as_number (generate_result); + jerry_value_free (generate_result); + + /* Static snapshots are not supported by default. */ + jerry_value_t exec_result = jerry_exec_snapshot (snapshot_buffer, snapshot_size, 0, 0, NULL); + TEST_ASSERT (jerry_value_is_exception (exec_result)); + jerry_value_free (exec_result); + + jerry_cleanup (); + + test_exec_snapshot (snapshot_buffer, snapshot_size, JERRY_SNAPSHOT_EXEC_ALLOW_STATIC); + } +} /* test_static_snapshot */ + +static void +test_merge_snapshot (void) +{ + if (jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_SAVE) && jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_EXEC)) + { + static uint32_t snapshot_buffer_0[SNAPSHOT_BUFFER_SIZE]; + static uint32_t snapshot_buffer_1[SNAPSHOT_BUFFER_SIZE]; + size_t snapshot_sizes[2]; + static uint32_t merged_snapshot_buffer[SNAPSHOT_BUFFER_SIZE]; + + const jerry_char_t code_to_snapshot1[] = "var a = 'hello'; 123"; + + jerry_init (JERRY_INIT_EMPTY); + + jerry_value_t parse_result = jerry_parse (code_to_snapshot1, sizeof (code_to_snapshot1) - 1, NULL); + TEST_ASSERT (!jerry_value_is_exception (parse_result)); + + jerry_value_t generate_result = jerry_generate_snapshot (parse_result, 0, snapshot_buffer_0, SNAPSHOT_BUFFER_SIZE); + jerry_value_free (parse_result); + + TEST_ASSERT (!jerry_value_is_exception (generate_result) && jerry_value_is_number (generate_result)); + + snapshot_sizes[0] = (size_t) jerry_value_as_number (generate_result); + jerry_value_free (generate_result); + + jerry_cleanup (); + + const jerry_char_t code_to_snapshot2[] = "var b = 'hello'; 456"; + + jerry_init (JERRY_INIT_EMPTY); + + parse_result = jerry_parse (code_to_snapshot2, sizeof (code_to_snapshot2) - 1, NULL); + TEST_ASSERT (!jerry_value_is_exception (parse_result)); + + generate_result = jerry_generate_snapshot (parse_result, 0, snapshot_buffer_1, SNAPSHOT_BUFFER_SIZE); + jerry_value_free (parse_result); + + TEST_ASSERT (!jerry_value_is_exception (generate_result) && jerry_value_is_number (generate_result)); + + snapshot_sizes[1] = (size_t) jerry_value_as_number (generate_result); + jerry_value_free (generate_result); + + jerry_cleanup (); + + jerry_init (JERRY_INIT_EMPTY); + + const char *error_p; + const uint32_t *snapshot_buffers[2]; + + snapshot_buffers[0] = snapshot_buffer_0; + snapshot_buffers[1] = snapshot_buffer_1; + + static uint32_t snapshot_buffer_0_bck[SNAPSHOT_BUFFER_SIZE]; + static uint32_t snapshot_buffer_1_bck[SNAPSHOT_BUFFER_SIZE]; + + memcpy (snapshot_buffer_0_bck, snapshot_buffer_0, SNAPSHOT_BUFFER_SIZE); + memcpy (snapshot_buffer_1_bck, snapshot_buffer_1, SNAPSHOT_BUFFER_SIZE); + + size_t merged_size = jerry_merge_snapshots (snapshot_buffers, + snapshot_sizes, + 2, + merged_snapshot_buffer, + SNAPSHOT_BUFFER_SIZE, + &error_p); + + jerry_cleanup (); + + TEST_ASSERT (0 == memcmp (snapshot_buffer_0_bck, snapshot_buffer_0, SNAPSHOT_BUFFER_SIZE)); + TEST_ASSERT (0 == memcmp (snapshot_buffer_1_bck, snapshot_buffer_1, SNAPSHOT_BUFFER_SIZE)); + + jerry_init (JERRY_INIT_EMPTY); + + jerry_value_t res = jerry_exec_snapshot (merged_snapshot_buffer, merged_size, 0, 0, NULL); + TEST_ASSERT (!jerry_value_is_exception (res)); + TEST_ASSERT (jerry_value_as_number (res) == 123); + jerry_value_free (res); + + res = jerry_exec_snapshot (merged_snapshot_buffer, merged_size, 1, 0, NULL); + TEST_ASSERT (!jerry_value_is_exception (res)); + TEST_ASSERT (jerry_value_as_number (res) == 456); + jerry_value_free (res); + + jerry_cleanup (); + } +} /* test_merge_snapshot */ + +static void +test_save_literals (void) +{ + if (jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_SAVE)) + { + /* C format generation */ + jerry_init (JERRY_INIT_EMPTY); + + static jerry_char_t literal_buffer_c[LITERAL_BUFFER_SIZE]; + static uint32_t literal_snapshot_buffer[SNAPSHOT_BUFFER_SIZE]; + static const jerry_char_t code_for_c_format[] = "var object = { aa:'fo\" o\\n \\\\', Bb:'max', aaa:'xzy0' };"; + + jerry_value_t parse_result = jerry_parse (code_for_c_format, sizeof (code_for_c_format) - 1, NULL); + TEST_ASSERT (!jerry_value_is_exception (parse_result)); + + jerry_value_t generate_result = + jerry_generate_snapshot (parse_result, 0, literal_snapshot_buffer, SNAPSHOT_BUFFER_SIZE); + jerry_value_free (parse_result); + + TEST_ASSERT (!jerry_value_is_exception (generate_result)); + TEST_ASSERT (jerry_value_is_number (generate_result)); + + size_t snapshot_size = (size_t) jerry_value_as_number (generate_result); + jerry_value_free (generate_result); + + const size_t lit_c_buf_sz = jerry_get_literals_from_snapshot (literal_snapshot_buffer, + snapshot_size, + literal_buffer_c, + LITERAL_BUFFER_SIZE, + true); + TEST_ASSERT (lit_c_buf_sz == 239); + + static const char *expected_c_format = ("jerry_length_t literal_count = 5;\n\n" + "jerry_char_t *literals[5] =\n" + "{\n" + " \"Bb\",\n" + " \"aa\",\n" + " \"aaa\",\n" + " \"xzy0\",\n" + " \"fo\\\" o\\x0A \\\\\"\n" + "};\n\n" + "jerry_length_t literal_sizes[5] =\n" + "{\n" + " 2 /* Bb */,\n" + " 2 /* aa */,\n" + " 3 /* aaa */,\n" + " 4 /* xzy0 */,\n" + " 8 /* fo\" o\n \\ */\n" + "};\n"); + + TEST_ASSERT (!strncmp ((char *) literal_buffer_c, expected_c_format, lit_c_buf_sz)); + + /* List format generation */ + static jerry_char_t literal_buffer_list[LITERAL_BUFFER_SIZE]; + const size_t lit_list_buf_sz = jerry_get_literals_from_snapshot (literal_snapshot_buffer, + snapshot_size, + literal_buffer_list, + LITERAL_BUFFER_SIZE, + false); + TEST_ASSERT (lit_list_buf_sz == 34); + TEST_ASSERT ( + !strncmp ((char *) literal_buffer_list, "2 Bb\n2 aa\n3 aaa\n4 xzy0\n8 fo\" o\n \\\n", lit_list_buf_sz)); + + jerry_cleanup (); + } +} /* test_save_literals */ + static void test_function_snapshot (void) { - /* function to snapshot */ if (!jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_SAVE) || !jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_EXEC)) { return; @@ -156,31 +373,6 @@ test_function_arguments_snapshot (void) } } /* test_function_arguments_snapshot */ -static void -test_exec_snapshot (uint32_t *snapshot_p, size_t snapshot_size, uint32_t exec_snapshot_flags) -{ - char string_data[32]; - - jerry_init (JERRY_INIT_EMPTY); - - jerry_register_magic_strings (magic_strings, - sizeof (magic_string_lengths) / sizeof (jerry_length_t), - magic_string_lengths); - - jerry_value_t res = jerry_exec_snapshot (snapshot_p, snapshot_size, 0, exec_snapshot_flags, NULL); - - TEST_ASSERT (!jerry_value_is_exception (res)); - TEST_ASSERT (jerry_value_is_string (res)); - jerry_size_t sz = jerry_string_size (res, JERRY_ENCODING_CESU8); - TEST_ASSERT (sz == 20); - sz = jerry_string_to_buffer (res, JERRY_ENCODING_CESU8, (jerry_char_t *) string_data, sz); - TEST_ASSERT (sz == 20); - jerry_value_free (res); - TEST_ASSERT (!strncmp (string_data, "string from snapshot", (size_t) sz)); - - jerry_cleanup (); -} /* test_exec_snapshot */ - static void test_snapshot_with_user (void) { @@ -249,189 +441,11 @@ main (void) { TEST_INIT (); - /* Static snapshot */ - if (jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_SAVE) && jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_EXEC)) - { - static uint32_t snapshot_buffer[SNAPSHOT_BUFFER_SIZE]; - const jerry_char_t code_to_snapshot[] = TEST_STRING_LITERAL ("function func(a, b, c) {" - " c = 'snapshot';" - " return arguments[0] + ' ' + b + ' ' + arguments[2];" - "};" - "func('string', 'from');"); + test_static_snapshot (); - jerry_init (JERRY_INIT_EMPTY); - jerry_register_magic_strings (magic_strings, - sizeof (magic_string_lengths) / sizeof (jerry_length_t), - magic_string_lengths); + test_merge_snapshot (); - jerry_value_t parse_result = jerry_parse (code_to_snapshot, sizeof (code_to_snapshot) - 1, NULL); - TEST_ASSERT (!jerry_value_is_exception (parse_result)); - - jerry_value_t generate_result = - jerry_generate_snapshot (parse_result, JERRY_SNAPSHOT_SAVE_STATIC, snapshot_buffer, SNAPSHOT_BUFFER_SIZE); - jerry_value_free (parse_result); - - TEST_ASSERT (!jerry_value_is_exception (generate_result) && jerry_value_is_number (generate_result)); - - size_t snapshot_size = (size_t) jerry_value_as_number (generate_result); - jerry_value_free (generate_result); - - /* Static snapshots are not supported by default. */ - jerry_value_t exec_result = jerry_exec_snapshot (snapshot_buffer, snapshot_size, 0, 0, NULL); - TEST_ASSERT (jerry_value_is_exception (exec_result)); - jerry_value_free (exec_result); - - jerry_cleanup (); - - test_exec_snapshot (snapshot_buffer, snapshot_size, JERRY_SNAPSHOT_EXEC_ALLOW_STATIC); - } - - /* Merge snapshot */ - if (jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_SAVE) && jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_EXEC)) - { - static uint32_t snapshot_buffer_0[SNAPSHOT_BUFFER_SIZE]; - static uint32_t snapshot_buffer_1[SNAPSHOT_BUFFER_SIZE]; - size_t snapshot_sizes[2]; - static uint32_t merged_snapshot_buffer[SNAPSHOT_BUFFER_SIZE]; - - const jerry_char_t code_to_snapshot1[] = "var a = 'hello'; 123"; - - jerry_init (JERRY_INIT_EMPTY); - - jerry_value_t parse_result = jerry_parse (code_to_snapshot1, sizeof (code_to_snapshot1) - 1, NULL); - TEST_ASSERT (!jerry_value_is_exception (parse_result)); - - jerry_value_t generate_result = jerry_generate_snapshot (parse_result, 0, snapshot_buffer_0, SNAPSHOT_BUFFER_SIZE); - jerry_value_free (parse_result); - - TEST_ASSERT (!jerry_value_is_exception (generate_result) && jerry_value_is_number (generate_result)); - - snapshot_sizes[0] = (size_t) jerry_value_as_number (generate_result); - jerry_value_free (generate_result); - - jerry_cleanup (); - - const jerry_char_t code_to_snapshot2[] = "var b = 'hello'; 456"; - - jerry_init (JERRY_INIT_EMPTY); - - parse_result = jerry_parse (code_to_snapshot2, sizeof (code_to_snapshot2) - 1, NULL); - TEST_ASSERT (!jerry_value_is_exception (parse_result)); - - generate_result = jerry_generate_snapshot (parse_result, 0, snapshot_buffer_1, SNAPSHOT_BUFFER_SIZE); - jerry_value_free (parse_result); - - TEST_ASSERT (!jerry_value_is_exception (generate_result) && jerry_value_is_number (generate_result)); - - snapshot_sizes[1] = (size_t) jerry_value_as_number (generate_result); - jerry_value_free (generate_result); - - jerry_cleanup (); - - jerry_init (JERRY_INIT_EMPTY); - - const char *error_p; - const uint32_t *snapshot_buffers[2]; - - snapshot_buffers[0] = snapshot_buffer_0; - snapshot_buffers[1] = snapshot_buffer_1; - - static uint32_t snapshot_buffer_0_bck[SNAPSHOT_BUFFER_SIZE]; - static uint32_t snapshot_buffer_1_bck[SNAPSHOT_BUFFER_SIZE]; - - memcpy (snapshot_buffer_0_bck, snapshot_buffer_0, SNAPSHOT_BUFFER_SIZE); - memcpy (snapshot_buffer_1_bck, snapshot_buffer_1, SNAPSHOT_BUFFER_SIZE); - - size_t merged_size = jerry_merge_snapshots (snapshot_buffers, - snapshot_sizes, - 2, - merged_snapshot_buffer, - SNAPSHOT_BUFFER_SIZE, - &error_p); - - jerry_cleanup (); - - TEST_ASSERT (0 == memcmp (snapshot_buffer_0_bck, snapshot_buffer_0, SNAPSHOT_BUFFER_SIZE)); - TEST_ASSERT (0 == memcmp (snapshot_buffer_1_bck, snapshot_buffer_1, SNAPSHOT_BUFFER_SIZE)); - - jerry_init (JERRY_INIT_EMPTY); - - jerry_value_t res = jerry_exec_snapshot (merged_snapshot_buffer, merged_size, 0, 0, NULL); - TEST_ASSERT (!jerry_value_is_exception (res)); - TEST_ASSERT (jerry_value_as_number (res) == 123); - jerry_value_free (res); - - res = jerry_exec_snapshot (merged_snapshot_buffer, merged_size, 1, 0, NULL); - TEST_ASSERT (!jerry_value_is_exception (res)); - TEST_ASSERT (jerry_value_as_number (res) == 456); - jerry_value_free (res); - - jerry_cleanup (); - } - - /* Save literals */ - if (jerry_feature_enabled (JERRY_FEATURE_SNAPSHOT_SAVE)) - { - /* C format generation */ - jerry_init (JERRY_INIT_EMPTY); - - static jerry_char_t literal_buffer_c[LITERAL_BUFFER_SIZE]; - static uint32_t literal_snapshot_buffer[SNAPSHOT_BUFFER_SIZE]; - static const jerry_char_t code_for_c_format[] = "var object = { aa:'fo\" o\\n \\\\', Bb:'max', aaa:'xzy0' };"; - - jerry_value_t parse_result = jerry_parse (code_for_c_format, sizeof (code_for_c_format) - 1, NULL); - TEST_ASSERT (!jerry_value_is_exception (parse_result)); - - jerry_value_t generate_result = - jerry_generate_snapshot (parse_result, 0, literal_snapshot_buffer, SNAPSHOT_BUFFER_SIZE); - jerry_value_free (parse_result); - - TEST_ASSERT (!jerry_value_is_exception (generate_result)); - TEST_ASSERT (jerry_value_is_number (generate_result)); - - size_t snapshot_size = (size_t) jerry_value_as_number (generate_result); - jerry_value_free (generate_result); - - const size_t lit_c_buf_sz = jerry_get_literals_from_snapshot (literal_snapshot_buffer, - snapshot_size, - literal_buffer_c, - LITERAL_BUFFER_SIZE, - true); - TEST_ASSERT (lit_c_buf_sz == 239); - - static const char *expected_c_format = ("jerry_length_t literal_count = 5;\n\n" - "jerry_char_t *literals[5] =\n" - "{\n" - " \"Bb\",\n" - " \"aa\",\n" - " \"aaa\",\n" - " \"xzy0\",\n" - " \"fo\\\" o\\x0A \\\\\"\n" - "};\n\n" - "jerry_length_t literal_sizes[5] =\n" - "{\n" - " 2 /* Bb */,\n" - " 2 /* aa */,\n" - " 3 /* aaa */,\n" - " 4 /* xzy0 */,\n" - " 8 /* fo\" o\n \\ */\n" - "};\n"); - - TEST_ASSERT (!strncmp ((char *) literal_buffer_c, expected_c_format, lit_c_buf_sz)); - - /* List format generation */ - static jerry_char_t literal_buffer_list[LITERAL_BUFFER_SIZE]; - const size_t lit_list_buf_sz = jerry_get_literals_from_snapshot (literal_snapshot_buffer, - snapshot_size, - literal_buffer_list, - LITERAL_BUFFER_SIZE, - false); - TEST_ASSERT (lit_list_buf_sz == 34); - TEST_ASSERT ( - !strncmp ((char *) literal_buffer_list, "2 Bb\n2 aa\n3 aaa\n4 xzy0\n8 fo\" o\n \\\n", lit_list_buf_sz)); - - jerry_cleanup (); - } + test_save_literals (); test_function_snapshot (); diff --git a/tests/unit-core/test-to-integer.c b/tests/unit-core/test-to-integer.c index 4e7c3f586..1cbdb32ac 100644 --- a/tests/unit-core/test-to-integer.c +++ b/tests/unit-core/test-to-integer.c @@ -110,11 +110,11 @@ main (void) TEST_ASSERT (num == ecma_number_make_infinity (false)); /* 5 */ - ecma_value_t floor = ecma_make_number_value (3.001f); + ecma_value_t floor_val = ecma_make_number_value (3.001f); - result = ecma_op_to_integer (floor, &num); + result = ecma_op_to_integer (floor_val, &num); - ecma_free_value (floor); + ecma_free_value (floor_val); TEST_ASSERT (!ECMA_IS_VALUE_ERROR (result)); TEST_ASSERT (num == 3); diff --git a/tools/cppcheck/suppressions-list b/tools/cppcheck/suppressions-list index 2d7bcca46..0431fb380 100644 --- a/tools/cppcheck/suppressions-list +++ b/tools/cppcheck/suppressions-list @@ -1,5 +1,44 @@ -wrongmathcall:tests/unit-math/test-math.inc.h -variableScope:jerry-math/*.c -invalidPointerCast:jerry-math/*.c - ConfigurationNotChecked:jerry-core/*.inc.h +arrayIndexOutOfBoundsCond:jerry-core/*.c +autoVariables:jerry-core/*.c +constParameter:jerry-core/*.c +constParameter:jerry-ext/*.c +constParameter:jerry-math/*.c +constParameter:tests/unit-core/*.c +duplicateValueTernary:jerry-core/*.c +incorrectStringBooleanError:tests/unit-core/test-newtarget.c +integerOverflowCond:jerry-math/*.c +invalidFunctionArg:tests/unit-math/test-math.inc.h +invalidPointerCast:jerry-math/*.c +knownConditionTrueFalse:jerry-core/*.c +knownConditionTrueFalse:jerry-math/*.c +negativeIndex:jerry-core/*.c +nullPointerArithmetic:jerry-core/parser/js/js-parser-line-info-create.c:572 +nullPointerArithmetic:jerry-core/parser/js/js-scanner-util.c:2345 +nullPointerArithmeticRedundantCheck:jerry-core/*.c +nullPointerRedundantCheck:jerry-core/*.c +nullPointerRedundantCheck:jerry-ext/*.c +nullPointerRedundantCheck:jerry-main/*.c +nullPointerRedundantCheck:tests/unit-core/*.c +oppositeInnerCondition:jerry-core/*.c +redundantAssignment:jerry-core/*.c +redundantAssignment:tests/unit-core/test-container-operation.c:129 +redundantInitialization:jerry-core/*.c +redundantInitialization:tests/unit-core/test-from-property-descriptor.c:42 +shiftNegative:jerry-core/*.c +shiftNegative:jerry-math/*.c +shiftNegativeLHS:jerry-math/*.c +shiftTooManyBits:jerry-core/*.c +shiftTooManyBitsSigned:jerry-math/*.c +signConversionCond:jerry-core/*.c +uninitvar:jerry-core/parser/js/js-parser-expr.c:3420 +uninitvar:tests/unit-core/test-api-objecttype.c:119 +unmatchedSuppression:jerry-core/*.inc.h +unreadVariable:jerry-core/*.c +unreadVariable:jerry-port/*.c +unusedStructMember:jerry-ext/arg/arg-transform-functions.c +unusedStructMember:jerry-main/*.c +unusedStructMember:tests/unit-core/*.c +variableScope:jerry-math/*.c +wrongmathcall:tests/unit-math/test-math.inc.h +zerodivcond:jerry-core/*.c