JDevlieghere added inline comments.

================
Comment at: lldb/tools/driver/Driver.cpp:673-674
+static void sigtstp_handler(int signo) {
   if (g_driver != nullptr)
     g_driver->GetDebugger().SaveInputTerminalState();
 
----------------
andcarminati wrote:
> JDevlieghere wrote:
> > labath wrote:
> > > JDevlieghere wrote:
> > > > I see an opportunity for a little RAII helper.
> > > What kind of a helper did you have in mind? Practically the entire 
> > > function consists of setup and teardown in preparation for the 
> > > `raise(signo)` call. If I wanted to be fancy I could put all of that in a 
> > > helper, but I don't think that would make it cleaner. Plus, we also need 
> > > to be careful about the functions we call from a signal handler, and I 
> > > really don't know whether e.g. `llvm::make_scope_exit` is guaranteed to 
> > > not allocate (heap) memory.
> > I was only referring to the Save/RestoreInputTerminalState() part of this 
> > function. Something like:
> > 
> > ```
> > class TerminalStateRAII() {
> > public:
> >   TerminalStateRAII(Driver* driver) : driver(m_driver) {
> >     if (m_driver)
> >       m_driver->GetDebugger().SaveInputTerminalState();
> >   }
> > 
> >   ~SignalHelper() {
> >     if (m_driver)
> >       m_driver->GetDebugger().SaveInputTerminalState();
> >   }
> > 
> > private:
> >   Driver* m_driver;
> > };
> > ```
> > 
> > Obviously, this isn't at all important, just something that came to mind.
> I think this is a good idea to reduce code duplication. Another approach:
> 
> ```
> class TerminalStateRAII() {
> public:
>   TerminalStateRAII(Driver* driver) : driver(m_driver) {
>     SaveInputTerminalState();
>   }
> 
>   ~TerminalStateRAII() {
>     SaveInputTerminalState();
>   }
> 
> private:
>   Driver* m_driver;
>   void SaveInputTerminalState(){
>     if (m_driver)
>       m_driver->GetDebugger().SaveInputTerminalState();
>   }
> };
> 
> ```
That's a typo on my part, the destructor needs to call 
`RestoreInputTerminalState` (as opposed to `SaveInputTerminalState`).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120320/new/

https://reviews.llvm.org/D120320

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to