diff options
author | Tom Tromey <tromey@adacore.com> | 2023-08-28 12:40:35 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-08-29 13:36:55 -0600 |
commit | c73556cb0e6da3c2a4484975ee51e052a9be8b36 (patch) | |
tree | 2f0a60170f6424004e4ff441c7c0b798fb0a0a68 /gdb | |
parent | 4fd1ba162ed6f197169d2af29f4230d7a89e2636 (diff) | |
download | gdb-c73556cb0e6da3c2a4484975ee51e052a9be8b36.zip gdb-c73556cb0e6da3c2a4484975ee51e052a9be8b36.tar.gz gdb-c73556cb0e6da3c2a4484975ee51e052a9be8b36.tar.bz2 |
Use gdb::array_view for value_array
This changes value_array to accept an array view. I also replaced an
alloca with a std::vector in array_operation::evaluate. This function
can work on any size of array, so it seems bad to use alloca.
Reviewed-by: John Baldwin <jhb@FreeBSD.org>
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/eval.c | 2 | ||||
-rw-r--r-- | gdb/rust-lang.c | 2 | ||||
-rw-r--r-- | gdb/valops.c | 3 | ||||
-rw-r--r-- | gdb/value.h | 2 |
4 files changed, 5 insertions, 4 deletions
@@ -2515,7 +2515,7 @@ array_operation::evaluate (struct type *expect_type, return set; } - value **argvec = XALLOCAVEC (struct value *, nargs); + std::vector<value *> argvec (nargs); for (tem = 0; tem < nargs; tem++) { /* Ensure that array expressions are coerced into pointer diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index 5eb33d0..f6e7d25 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -1344,7 +1344,7 @@ eval_op_rust_array (struct type *expect_type, struct expression *exp, for (i = 0; i < copies; ++i) eltvec[i] = elt; - return value_array (0, copies - 1, eltvec.data ()); + return value_array (0, copies - 1, eltvec); } else { diff --git a/gdb/valops.c b/gdb/valops.c index ea9d9b3..1133049 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1692,7 +1692,8 @@ value_ind (struct value *arg1) don't currently enforce any restriction on their types). */ struct value * -value_array (int lowbound, int highbound, struct value **elemvec) +value_array (int lowbound, int highbound, + gdb::array_view<struct value *> elemvec) { int nelem; int idx; diff --git a/gdb/value.h b/gdb/value.h index e5c63dc..ccf5219 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -1226,7 +1226,7 @@ inline struct value *value_string (const char *ptr, ssize_t count, } extern struct value *value_array (int lowbound, int highbound, - struct value **elemvec); + gdb::array_view<struct value *> elemvec); extern struct value *value_concat (struct value *arg1, struct value *arg2); |