Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0433-erts-Silence-CodeChecker-in-match_spec_tes...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0433-erts-Silence-CodeChecker-in-match_spec_test.patch of Package erlang
From 3bcdf7deec03c4ab8cb2a505af6b4036a471f8c6 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson <sverker@erlang.org> Date: Thu, 11 Feb 2021 13:30:44 +0100 Subject: [PATCH] erts: Silence CodeChecker in match_spec_test by simplifying the code. --- erts/emulator/beam/erl_db_util.c | 47 ++++++++++++++------------------ 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/erts/emulator/beam/erl_db_util.c b/erts/emulator/beam/erl_db_util.c index 34856727ca..641d7a0779 100644 --- a/erts/emulator/beam/erl_db_util.c +++ b/erts/emulator/beam/erl_db_util.c @@ -5277,9 +5277,6 @@ static Eterm match_spec_test(Process *p, Eterm against, Eterm spec, int trace) Eterm ret; Eterm flg; Eterm *hp; - Eterm *arr; - int n; - Eterm l; Uint32 ret_flags; Uint sz; Eterm save_cp; @@ -5309,26 +5306,27 @@ static Eterm match_spec_test(Process *p, Eterm against, Eterm spec, int trace) db_match_dis(mps); } #endif /* DMC_DEBUG */ - l = against; - n = 0; - while (is_list(l)) { - ++n; - l = CDR(list_val(l)); - } if (trace) { - if (n) + Eterm *arr = NULL; + int n = 0; + + if (is_list(against)) { + Eterm l = against; + do { + ++n; + l = CDR(list_val(l)); + } while (is_list(l)); + arr = erts_alloc(ERTS_ALC_T_DB_TMP, sizeof(Eterm) * n); - else { - ASSERT(!is_list(against)); - arr = NULL; + + l = against; + n = 0; + do { + arr[n] = CAR(list_val(l)); + ++n; + l = CDR(list_val(l)); + } while (is_list(l)); } - l = against; - n = 0; - while (is_list(l)) { - arr[n] = CAR(list_val(l)); - ++n; - l = CDR(list_val(l)); - } save_cp = p->stop[0]; p->stop[0] = NIL; res = erts_match_set_run_trace(p, p, @@ -5336,10 +5334,10 @@ static Eterm match_spec_test(Process *p, Eterm against, Eterm spec, int trace) ERTS_PAM_COPY_RESULT|ERTS_PAM_IGNORE_TRACE_SILENT, &ret_flags); p->stop[0] = save_cp; + if (arr) + erts_free(ERTS_ALC_T_DB_TMP, arr); } else { - n = 0; - arr = NULL; - res = erts_match_set_run_ets(p, mps, against, n, &ret_flags); + res = erts_match_set_run_ets(p, mps, against, 0, &ret_flags); } /* We are in the context of a BIF, @@ -5360,9 +5358,6 @@ static Eterm match_spec_test(Process *p, Eterm against, Eterm spec, int trace) flg = CONS(hp, am_return_trace, flg); hp += 2; } - if (trace && arr != NULL) { - erts_free(ERTS_ALC_T_DB_TMP, arr); - } erts_bin_free(mps); ret = TUPLE4(hp, am_ok, res, flg, lint_res); } -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor