diff options
author | 2021-06-25 21:38:51 -0400 | |
---|---|---|
committer | 2021-06-25 21:38:51 -0400 | |
commit | d6ff04a343f97026f7d23bb036e0f858b21f3bfd (patch) | |
tree | fba88a27803f0729e6e5193e3a62eef51e5df8fb /gdb/cli/cli-decode.h | |
parent | gdb: add context getter/setter to cmd_list_element (diff) | |
download | binutils-gdb-d6ff04a343f97026f7d23bb036e0f858b21f3bfd.tar.gz binutils-gdb-d6ff04a343f97026f7d23bb036e0f858b21f3bfd.tar.bz2 binutils-gdb-d6ff04a343f97026f7d23bb036e0f858b21f3bfd.zip |
gdb: add assert in cmd_list_element::set_context
If something tries to set a context pointer on a cmd_list_element and
m_context is not nullptr, it's likely that two parts of the code are
trying to set different contexts, and one will overwrite the other.
This is almost guaranteed to lead to bad behavior or a crash, as one of
the spots will not be using the data it expects. This happened to me
during development, so I think having this assert would be useful to
catch this problem earlier.
gdb/ChangeLog:
* cli/cli-decode.h (struct cmd_list_element) <set_context>: Add
assert.
Change-Id: I1f2e9fda1bf2bec1b732c9b90e7d7910a97f2ac6
Diffstat (limited to 'gdb/cli/cli-decode.h')
-rw-r--r-- | gdb/cli/cli-decode.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h index 1692a6e2835..241535ae5b5 100644 --- a/gdb/cli/cli-decode.h +++ b/gdb/cli/cli-decode.h @@ -94,7 +94,10 @@ struct cmd_list_element { return this->func == nullptr; } void set_context (void *context) - { m_context = context; } + { + gdb_assert (m_context == nullptr); + m_context = context; + } void *context () const { return m_context; } |