Преглед на файлове

LibCoreDump: Make for_each_thread_info() callback arg a reference

It's never nullptr, so it should be a reference.
Linus Groh преди 4 години
родител
ревизия
21bc8cfe8f
променени са 2 файла, в които са добавени 6 реда и са изтрити 6 реда
  1. 4 4
      Applications/CrashDaemon/main.cpp
  2. 2 2
      Libraries/LibCoreDump/Reader.h

+ 4 - 4
Applications/CrashDaemon/main.cpp

@@ -134,11 +134,11 @@ static void backtrace(const String& coredump_path)
 {
     size_t thread_index = 0;
     auto coredump = CoreDump::Reader::create(coredump_path);
-    coredump->for_each_thread_info([&thread_index, &coredump](const ELF::Core::ThreadInfo* thread_info) {
-        dbgln("Backtrace for thread #{}, tid={}", thread_index++, thread_info->tid);
+    coredump->for_each_thread_info([&thread_index, &coredump](const ELF::Core::ThreadInfo& thread_info) {
+        dbgln("Backtrace for thread #{}, tid={}", thread_index++, thread_info.tid);
 
-        uint32_t* ebp = (uint32_t*)thread_info->regs.ebp;
-        uint32_t* eip = (uint32_t*)thread_info->regs.eip;
+        uint32_t* ebp = (uint32_t*)thread_info.regs.ebp;
+        uint32_t* eip = (uint32_t*)thread_info.regs.eip;
         while (ebp && eip) {
 
             auto line = backtrace_line(*coredump, (FlatPtr)eip);

+ 2 - 2
Libraries/LibCoreDump/Reader.h

@@ -94,8 +94,8 @@ void Reader::for_each_thread_info(Func func) const
     for (NotesEntryIterator it((const u8*)m_coredump_image.program_header(m_notes_segment_index).raw_data()); !it.at_end(); it.next()) {
         if (it.type() != ELF::Core::NotesEntryHeader::Type::ThreadInfo)
             continue;
-        auto* region = (const ELF::Core::ThreadInfo*)(it.current());
-        IterationDecision decision = func(region);
+        auto& thread_info = reinterpret_cast<const ELF::Core::ThreadInfo&>(*it.current());
+        IterationDecision decision = func(thread_info);
         if (decision == IterationDecision::Break)
             return;
     }