TODO: defer workaround, should remove after fix
This commit is contained in:
@@ -80,7 +80,7 @@ func (p *pipe) write(b []byte) (n int, err error) {
|
|||||||
return 0, p.writeCloseError()
|
return 0, p.writeCloseError()
|
||||||
default:
|
default:
|
||||||
p.wrMu.Lock()
|
p.wrMu.Lock()
|
||||||
defer p.wrMu.Unlock()
|
//TODO(lijie): workaround for defer crash on wasm
|
||||||
}
|
}
|
||||||
|
|
||||||
for once := true; once || len(b) > 0; once = false {
|
for once := true; once || len(b) > 0; once = false {
|
||||||
@@ -90,9 +90,11 @@ func (p *pipe) write(b []byte) (n int, err error) {
|
|||||||
b = b[nw:]
|
b = b[nw:]
|
||||||
n += nw
|
n += nw
|
||||||
case <-p.done:
|
case <-p.done:
|
||||||
|
p.wrMu.Unlock()
|
||||||
return n, p.writeCloseError()
|
return n, p.writeCloseError()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
p.wrMu.Unlock()
|
||||||
return n, nil
|
return n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -380,7 +380,7 @@ func (m *Map) CompareAndSwap(key, old, new any) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m.mu.Lock()
|
m.mu.Lock()
|
||||||
defer m.mu.Unlock()
|
//TODO(lijie): workaround for defer crash on wasm
|
||||||
read = m.loadReadOnly()
|
read = m.loadReadOnly()
|
||||||
swapped := false
|
swapped := false
|
||||||
if e, ok := read.m[key]; ok {
|
if e, ok := read.m[key]; ok {
|
||||||
@@ -395,6 +395,7 @@ func (m *Map) CompareAndSwap(key, old, new any) bool {
|
|||||||
// more efficient steady state.
|
// more efficient steady state.
|
||||||
m.missLocked()
|
m.missLocked()
|
||||||
}
|
}
|
||||||
|
m.mu.Unlock()
|
||||||
return swapped
|
return swapped
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -163,12 +163,13 @@ func Clearenv() {
|
|||||||
func Environ() []string {
|
func Environ() []string {
|
||||||
envOnce.Do(copyenv)
|
envOnce.Do(copyenv)
|
||||||
envLock.RLock()
|
envLock.RLock()
|
||||||
defer envLock.RUnlock()
|
//TODO(lijie): workaround for defer crash on wasm
|
||||||
a := make([]string, 0, len(envs))
|
a := make([]string, 0, len(envs))
|
||||||
for _, env := range envs {
|
for _, env := range envs {
|
||||||
if env != "" {
|
if env != "" {
|
||||||
a = append(a, env)
|
a = append(a, env)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
envLock.RUnlock()
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -577,7 +577,7 @@ func readFile(name string) ([]byte, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer closefd(f)
|
//TODO(lijie): workaround for defer crash on wasm
|
||||||
var (
|
var (
|
||||||
buf [4096]byte
|
buf [4096]byte
|
||||||
ret []byte
|
ret []byte
|
||||||
@@ -592,9 +592,11 @@ func readFile(name string) ([]byte, error) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
if len(ret) > maxFileSize {
|
if len(ret) > maxFileSize {
|
||||||
|
closefd(f)
|
||||||
return nil, fileSizeError(name)
|
return nil, fileSizeError(name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
closefd(f)
|
||||||
return ret, err
|
return ret, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user