In execute(), check if command is Runnable()

A corner case exists where c.Runnable() is not checked
before c.Run() is called, thus a nil c.Run is executed
leading to "panic: runtime error: invalid memory address
or nil pointer dereference".

This patch adds an extra c.Runnable() check in execute()
to catch that corner case.

Fixes #37.
This commit is contained in:
Anthony Fok 2014-12-11 10:06:11 -07:00 committed by spf13
parent 6e6b6a9c19
commit 4745f1fd64

View file

@ -369,8 +369,9 @@ func (c *Command) execute(a []string) (err error) {
r.SetOutput(out)
return err
} else {
// If help is called, regardless of other flags, we print that
if c.helpFlagVal {
// If help is called, regardless of other flags, we print that.
// Print help also if c.Run is nil.
if c.helpFlagVal || !c.Runnable() {
c.Help()
return nil
}