[Lldb-commits] [lldb] [lldb] Adds additional fields to ProcessInfo (PR #91544)
Greg Clayton via lldb-commits
lldb-commits at lists.llvm.org
Fri May 10 11:35:09 PDT 2024
================
@@ -147,96 +148,111 @@ class ProcessInstanceInfo : public ProcessInfo {
ProcessInstanceInfo() = default;
ProcessInstanceInfo(const char *name, const ArchSpec &arch, lldb::pid_t pid)
- : ProcessInfo(name, arch, pid), m_euid(UINT32_MAX), m_egid(UINT32_MAX),
- m_parent_pid(LLDB_INVALID_PROCESS_ID) {}
+ : ProcessInfo(name, arch, pid) {}
void Clear() {
ProcessInfo::Clear();
- m_euid = UINT32_MAX;
- m_egid = UINT32_MAX;
- m_parent_pid = LLDB_INVALID_PROCESS_ID;
+ m_euid = std::nullopt;
+ m_egid = std::nullopt;
+ m_parent_pid = std::nullopt;
}
- uint32_t GetEffectiveUserID() const { return m_euid; }
+ uint32_t GetEffectiveUserID() const { return m_euid.value(); }
----------------
clayborg wrote:
can we actually return `std::optional<uint32_t>` here? Otherwise if someone calls this and `m_euid` doesn't have a value, then it will throw a `std::bad_optional_access` exception.
There is a `std::optional<T>::value_or(T)`, but that will defeat the reason for adding a std::optional in the first place. So I see two options:
```
uint32_t GetEffectiveUserID(uint32_t default_value = 0) const { return m_euid.value_or(default_value); }
```
or
```
std::optional<uint32_t> GetEffectiveUserID() const { return m_euid; }
```
I would prefer the latter, but now sure now many locations this will affect.
https://github.com/llvm/llvm-project/pull/91544
More information about the lldb-commits
mailing list