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