From c2025c4131a62bc034c663d2e8c22e37b09fce04 Mon Sep 17 00:00:00 2001 From: "Hyang-Ah (Hana) Kim" Date: Fri, 27 Feb 2015 12:34:25 -0500 Subject: [PATCH] os: fix LinkError creation on windows. Not only carrying invalid info but also this caused Error to crash with null pointer exception. Change-Id: Ibfe63d20eb9b9178ea618e59c74111e9245a6779 Reviewed-on: https://go-review.googlesource.com/6270 Run-TryBot: Hyang-Ah Hana Kim Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- src/os/file_windows.go | 5 ++--- src/os/os_test.go | 8 ++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/os/file_windows.go b/src/os/file_windows.go index 2a90a50559..fa0736753c 100644 --- a/src/os/file_windows.go +++ b/src/os/file_windows.go @@ -508,9 +508,8 @@ func Link(oldname, newname string) error { if err != nil { return &LinkError{"link", oldname, newname, err} } - - e := syscall.CreateHardLink(n, o, 0) - if e != nil { + err = syscall.CreateHardLink(n, o, 0) + if err != nil { return &LinkError{"link", oldname, newname, err} } return nil diff --git a/src/os/os_test.go b/src/os/os_test.go index 5285b76024..21d229635d 100644 --- a/src/os/os_test.go +++ b/src/os/os_test.go @@ -533,6 +533,14 @@ func TestHardLink(t *testing.T) { if err != nil { t.Fatalf("link %q, %q failed: %v", to, from, err) } + + none := "hardlinktestnone" + err = Link(none, none) + // Check the returned error is well-formed. + if lerr, ok := err.(*LinkError); !ok || lerr.Error() == "" { + t.Errorf("link %q, %q failed to return a valid error", none, none) + } + defer Remove(from) tostat, err := Stat(to) if err != nil { -- 2.48.1