fix compile information overrite

This commit is contained in:
criyle 2020-02-21 02:35:39 -05:00
parent 19ab1bc1a6
commit 9ff541bc39
3 changed files with 12 additions and 3 deletions

2
go.mod
View File

@ -3,7 +3,7 @@ module github.com/criyle/go-judge
go 1.13 go 1.13
require ( require (
github.com/criyle/go-sandbox v0.0.0-20200220013035-33a7b2b603c2 github.com/criyle/go-sandbox v0.0.0-20200221071805-5b50e9db4d0d
github.com/googollee/go-engine.io v1.4.3-0.20200211083925-ac1f0a0b48dd github.com/googollee/go-engine.io v1.4.3-0.20200211083925-ac1f0a0b48dd
github.com/googollee/go-socket.io v1.4.2 github.com/googollee/go-socket.io v1.4.2
github.com/ugorji/go/codec v1.1.7 github.com/ugorji/go/codec v1.1.7

4
go.sum
View File

@ -12,8 +12,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/criyle/go-sandbox v0.0.0-20200220013035-33a7b2b603c2 h1:JcoYAvzbmUPQ1W6rc5zpl60edjGE0xwQUnj2uBkMesQ= github.com/criyle/go-sandbox v0.0.0-20200221071805-5b50e9db4d0d h1:9q4gpfGyTNm/5weXAL86oXzm7NNd3Dg9dI2jWyUvURw=
github.com/criyle/go-sandbox v0.0.0-20200220013035-33a7b2b603c2/go.mod h1:32Edg/qMDGZRUMvCCqT3m5vbdL8p1Cro9A1MEj3fQ6o= github.com/criyle/go-sandbox v0.0.0-20200221071805-5b50e9db4d0d/go.mod h1:32Edg/qMDGZRUMvCCqT3m5vbdL8p1Cro9A1MEj3fQ6o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

View File

@ -25,6 +25,8 @@ func prepareFds(r *Runner) ([][]*os.File, [][]pipeBuff, []*os.File, error) {
prepareCmdFd := func(c *Cmd, count int) ([]*os.File, []pipeBuff, error) { prepareCmdFd := func(c *Cmd, count int) ([]*os.File, []pipeBuff, error) {
fd := make([]*os.File, count) fd := make([]*os.File, count)
// record same name buffer for one command to avoid multiple pipe creation
pb := make(map[string]*pipe.Buffer)
var ptc []pipeBuff var ptc []pipeBuff
for j, t := range c.Files { for j, t := range c.Files {
@ -45,11 +47,17 @@ func prepareFds(r *Runner) ([][]*os.File, [][]pipeBuff, []*os.File, error) {
fileToClose = append(fileToClose, f) fileToClose = append(fileToClose, f)
case PipeCollector: case PipeCollector:
if b, ok := pb[t.Name]; ok {
fd[j] = b.W
break
}
b, err := pipe.NewBuffer(t.SizeLimit) b, err := pipe.NewBuffer(t.SizeLimit)
if err != nil { if err != nil {
return nil, nil, fmt.Errorf("failed to create pipe %v", err) return nil, nil, fmt.Errorf("failed to create pipe %v", err)
} }
fd[j] = b.W fd[j] = b.W
pb[t.Name] = b
ptc = append(ptc, pipeBuff{b, t.Name}) ptc = append(ptc, pipeBuff{b, t.Name})
fileToClose = append(fileToClose, b.W) fileToClose = append(fileToClose, b.W)
@ -57,6 +65,7 @@ func prepareFds(r *Runner) ([][]*os.File, [][]pipeBuff, []*os.File, error) {
return nil, nil, fmt.Errorf("unknown file type %v", t) return nil, nil, fmt.Errorf("unknown file type %v", t)
} }
} }
return fd, ptc, nil return fd, ptc, nil
} }