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
parent b825817fc0
commit f7825f4104

View file

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