mirror of
https://github.com/golang/go
synced 2024-11-21 22:14:41 -07:00
cgo: fix GoBytes
R=golang-dev, adg CC=golang-dev https://golang.org/cl/4956051
This commit is contained in:
parent
4ca2172f38
commit
e1cfb6f3a9
@ -12,6 +12,7 @@ CGOFILES=\
|
|||||||
callback.go\
|
callback.go\
|
||||||
env.go\
|
env.go\
|
||||||
exports.go\
|
exports.go\
|
||||||
|
helpers.go\
|
||||||
issue1222.go\
|
issue1222.go\
|
||||||
issue1328.go\
|
issue1328.go\
|
||||||
issue1560.go\
|
issue1560.go\
|
||||||
|
@ -65,7 +65,7 @@ func testCallbackPanic(t *testing.T) {
|
|||||||
func testCallbackPanicLoop(t *testing.T) {
|
func testCallbackPanicLoop(t *testing.T) {
|
||||||
// Make sure we don't blow out m->g0 stack.
|
// Make sure we don't blow out m->g0 stack.
|
||||||
for i := 0; i < 100000; i++ {
|
for i := 0; i < 100000; i++ {
|
||||||
TestCallbackPanic(t)
|
testCallbackPanic(t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,5 +26,6 @@ func TestBlocking(t *testing.T) { testBlocking(t) }
|
|||||||
func Test1328(t *testing.T) { test1328(t) }
|
func Test1328(t *testing.T) { test1328(t) }
|
||||||
func TestParallelSleep(t *testing.T) { testParallelSleep(t) }
|
func TestParallelSleep(t *testing.T) { testParallelSleep(t) }
|
||||||
func TestSetEnv(t *testing.T) { testSetEnv(t) }
|
func TestSetEnv(t *testing.T) { testSetEnv(t) }
|
||||||
|
func TestHelpers(t *testing.T) { testHelpers(t) }
|
||||||
|
|
||||||
func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }
|
func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }
|
||||||
|
35
misc/cgo/test/helpers.go
Normal file
35
misc/cgo/test/helpers.go
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
// Copyright 2011 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package cgotest
|
||||||
|
|
||||||
|
// const char *greeting = "hello, world";
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
const greeting = "hello, world"
|
||||||
|
|
||||||
|
type testPair struct {
|
||||||
|
Name string
|
||||||
|
Got, Want interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
var testPairs = []testPair{
|
||||||
|
{"GoString", C.GoString(C.greeting), greeting},
|
||||||
|
{"GoStringN", C.GoStringN(C.greeting, 5), greeting[:5]},
|
||||||
|
{"GoBytes", C.GoBytes(unsafe.Pointer(C.greeting), 5), []byte(greeting[:5])},
|
||||||
|
}
|
||||||
|
|
||||||
|
func testHelpers(t *testing.T) {
|
||||||
|
for _, pair := range testPairs {
|
||||||
|
if !reflect.DeepEqual(pair.Got, pair.Want) {
|
||||||
|
t.Errorf("%s: got %#v, want %#v", pair.Got, pair.Want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -80,6 +80,8 @@ runtime·gobytes(byte *p, int32 n)
|
|||||||
Slice sl;
|
Slice sl;
|
||||||
|
|
||||||
sl.array = runtime·mallocgc(n, FlagNoPointers, 1, 0);
|
sl.array = runtime·mallocgc(n, FlagNoPointers, 1, 0);
|
||||||
|
sl.len = n;
|
||||||
|
sl.cap = n;
|
||||||
runtime·memmove(sl.array, p, n);
|
runtime·memmove(sl.array, p, n);
|
||||||
return sl;
|
return sl;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user