Merge pull request #50 from sethvargo/sethvargo/npe

Check if multierror is nil in WrappedErrors
diff --git a/multierror.go b/multierror.go
index d05dd92..f545743 100644
--- a/multierror.go
+++ b/multierror.go
@@ -40,14 +40,17 @@
 	return fmt.Sprintf("*%#v", *e)
 }
 
-// WrappedErrors returns the list of errors that this Error is wrapping.
-// It is an implementation of the errwrap.Wrapper interface so that
-// multierror.Error can be used with that library.
+// WrappedErrors returns the list of errors that this Error is wrapping. It is
+// an implementation of the errwrap.Wrapper interface so that multierror.Error
+// can be used with that library.
 //
-// This method is not safe to be called concurrently and is no different
-// than accessing the Errors field directly. It is implemented only to
-// satisfy the errwrap.Wrapper interface.
+// This method is not safe to be called concurrently. Unlike accessing the
+// Errors field directly, this function also checks if the multierror is nil to
+// prevent a null-pointer panic. It satisfies the errwrap.Wrapper interface.
 func (e *Error) WrappedErrors() []error {
+	if e == nil {
+		return nil
+	}
 	return e.Errors
 }
 
diff --git a/multierror_test.go b/multierror_test.go
index 972c52d..ed1f08c 100644
--- a/multierror_test.go
+++ b/multierror_test.go
@@ -69,6 +69,11 @@
 	if !reflect.DeepEqual(multi.Errors, multi.WrappedErrors()) {
 		t.Fatalf("bad: %s", multi.WrappedErrors())
 	}
+
+	multi = nil
+	if err := multi.WrappedErrors(); err != nil {
+		t.Fatalf("bad: %#v", multi)
+	}
 }
 
 func TestErrorUnwrap(t *testing.T) {