From d205dc23e953f5394a9cb5d61d3fc638027fcdab Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Fri, 6 May 2016 13:52:50 +0100 Subject: [PATCH] Fix oddities using a file in the root - fixes #471 * Check return from NewFsObject which caused nil ptr deref * Correct root directory from "" to string(os.PathSeparator) in getDirFile --- local/local.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/local/local.go b/local/local.go index 1f1bce996..474c27cec 100644 --- a/local/local.go +++ b/local/local.go @@ -77,6 +77,9 @@ func NewFs(name, root string) (fs.Fs, error) { var remote string f.root, remote = getDirFile(f.root) obj := f.NewFsObject(remote) + if obj == nil { + return nil, fmt.Errorf("Failed to make object for %q in %q", remote, f.root) + } // return a Fs Limited to this object return fs.NewLimited(f, obj), nil } @@ -622,7 +625,11 @@ func (o *Object) Remove() error { // Assumes os.PathSeparator is used. func getDirFile(s string) (string, string) { i := strings.LastIndex(s, string(os.PathSeparator)) - return s[:i], s[i+1:] + dir, file := s[:i], s[i+1:] + if dir == "" { + dir = string(os.PathSeparator) + } + return dir, file } func (f *Fs) filterPath(s string) string {