jpalecek added a comment.

  In D29814#674013 <https://phabricator.kde.org/D29814#674013>, @dfaure wrote:
  
  > I'm a bit confused by the bug this is fixing. Surely this doesn't happen to 
all cases of crashes without autorestart enabled??
  >
  > Also, it sounds like a null check might be enough.
  
  
  No. It is a crash where `s_autoRestartCommandLine` was null. The actual crash 
happened in the logging code, but it is also used in `startProcess` and I think 
going for non-null `s_autoRestartCommandLine` is actually easier than faffing 
with null pointer checks and special casing in the signal handler code. Even 
with no restart arguments, you still need `argv` to hold the executable name to 
restart, so why not maintain it uniformly? It only costs a few bytes of heap.

INLINE COMMENTS

> dfaure wrote in kcrash.cpp:107
> Should this become 1 then? Otherwise the `for` loop won't delete that new 
> `new char*[1]`

No. The invariant is that `s_autoRestartArgc` is the number of arguments, not 
counting the last `null`. The `new char*[1]` is deleted after the loop.

> dfaure wrote in kcrash.cpp:272
> insert(0) reads like prepend, but args is empty anyway, why not just use 
> append?

Well I was thinking about `resize()`, then found there wasn't any. However, if 
we want to be clear, maybe `args = { QString() }` would be the best?

(In reality, the effect should be `args = { filePath }`, but that comes with 
the next line.)

REPOSITORY
  R285 KCrash

REVISION DETAIL
  https://phabricator.kde.org/D29814

To: jpalecek, #frameworks, dfaure
Cc: kde-frameworks-devel, LeGast00n, cblack, michaelh, ngraham, bruns

Reply via email to