go-godo / godo

golang build tool in the spirt of rake, gulp
MIT License
535 stars 31 forks source link

A panic caused at isDir function in glob.go on Windows #43

Open naganumat opened 8 years ago

naganumat commented 8 years ago

On Windows, Godo causes panic.

> godo
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x14 pc=0x509f73]

goroutine 1 [running]:
gopkg.in/godo.v2/glob.isDir(0x11a46600, 0x37, 0x1199c620)
        C:/Users/(snip)/src/gopkg.in/godo.v2/glob/glob.go:221 +0x73
gopkg.in/godo.v2/glob.PatternRoot(0x11a46600, 0x37, 0x0, 0x0)
        C:/Users/(snip)/src/gopkg.in/godo.v2/glob/glob.go:227 +0x37
gopkg.in/godo.v2/glob.Glob(0x11a7fd50, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        C:/Users/(snip)/src/gopkg.in/godo.v2/glob/glob.go:172 +0x87c
gopkg.in/godo.v2/util.Outdated(0x11a7fd50, 0x1, 0x1, 0x11a7fd48, 0x1, 0x1, 0x37)
        C:/Users/(snip)/src/gopkg.in/godo.v2/util/fs.go:42 +0x45
main.buildMain(0x119dde40, 0x3b, 0x119d9800, 0x0, 0x0)
        C:/Users/(snip)/src/gopkg.in/godo.v2/cmd/godo/main.go:237 +0x34e
main.buildCommand(0x119dde40, 0x3b, 0x0, 0x119adf7c, 0x0, 0x0)
        C:/Users/(snip)/src/gopkg.in/godo.v2/cmd/godo/main.go:103 +0x40
main.run(0x119dde40, 0x3b)
        C:/Users/(snip)/src/gopkg.in/godo.v2/cmd/godo/main.go:94 +0x4b
main.main()
        C:/Users/(snip)/src/gopkg.in/godo.v2/cmd/godo/main.go:87 +0x793

goroutine 5 [syscall]:
os/signal.loop()
        c:/go/src/os/signal/signal_unix.go:22 +0x1a
created by os/signal.init.1
        c:/go/src/os/signal/signal_unix.go:28 +0x36

I added following code to isDir function in glob.go, then get a next message.

    if err != nil {
        fmt.Println(err.Error())
    }
isDir: GetFileAttributesEx C:\Users\(snip)\Gododir/**/*.go: The filename, directory name, or volume la
bel syntax is incorrect.

Environment: Godo v2.0.7 (maybe), Go 1.5.3, Windows 7

NickLarsenNZ commented 5 years ago

I get this in Linux when the glob looks for things I don't have permission to (eg: /root/**/*).