1
0
mirror of https://github.com/golang/go synced 2024-11-18 20:24:41 -07:00

runtime/race: update runtime to r183644

This revision properly handles memory range accesses.
Fixes #4453.
Fixes #5654.

R=golang-dev, iant, remyoudompheng
CC=golang-dev
https://golang.org/cl/10082043
This commit is contained in:
Dmitriy Vyukov 2013-06-13 14:32:05 +04:00
parent b76ddefee5
commit cc99e6e949
4 changed files with 39 additions and 3 deletions

View File

@ -5,6 +5,7 @@
package race_test
import (
"bytes"
"crypto/sha1"
"errors"
"fmt"
@ -1477,8 +1478,7 @@ func TestRaceSliceString(t *testing.T) {
<-c
}
// http://golang.org/issue/4453
func TestRaceFailingSliceStruct(t *testing.T) {
func TestRaceSliceStruct(t *testing.T) {
type X struct {
x, y int
}
@ -1493,7 +1493,7 @@ func TestRaceFailingSliceStruct(t *testing.T) {
<-c
}
func TestRaceFailingAppendSliceStruct(t *testing.T) {
func TestRaceAppendSliceStruct(t *testing.T) {
type X struct {
x, y int
}
@ -1670,3 +1670,39 @@ func TestRaceIssue5567(t *testing.T) {
t.Fatal(err)
}
}
func TestRaceIssue5654(t *testing.T) {
text := `Friends, Romans, countrymen, lend me your ears;
I come to bury Caesar, not to praise him.
The evil that men do lives after them;
The good is oft interred with their bones;
So let it be with Caesar. The noble Brutus
Hath told you Caesar was ambitious:
If it were so, it was a grievous fault,
And grievously hath Caesar answer'd it.
Here, under leave of Brutus and the rest -
For Brutus is an honourable man;
So are they all, all honourable men -
Come I to speak in Caesar's funeral.
He was my friend, faithful and just to me:
But Brutus says he was ambitious;
And Brutus is an honourable man.`
data := bytes.NewBufferString(text)
in := make(chan []byte)
go func() {
buf := make([]byte, 16)
var n int
var err error
for ; err == nil; n, err = data.Read(buf) {
in <- buf[:n]
}
close(in)
}()
res := ""
for s := range in {
res += string(s)
}
_ = res
}