mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
fix segfault printing errors. add test case and improve messages.
Fixes #338. R=rsc CC=golang-dev https://golang.org/cl/163083
This commit is contained in:
parent
f6c0eba741
commit
114f73f822
2 changed files with 41 additions and 6 deletions
|
|
@ -214,28 +214,28 @@ func (server *serverType) register(rcvr interface{}) os.Error {
|
|||
}
|
||||
argType, ok := mtype.In(1).(*reflect.PtrType);
|
||||
if !ok {
|
||||
log.Stderr(mname, "arg type not a pointer:", argType.String());
|
||||
log.Stderr(mname, "arg type not a pointer:", mtype.In(1));
|
||||
continue;
|
||||
}
|
||||
if _, ok := argType.Elem().(*reflect.StructType); !ok {
|
||||
log.Stderr(mname, "arg type not a pointer to a struct:", argType.String());
|
||||
log.Stderr(mname, "arg type not a pointer to a struct:", argType);
|
||||
continue;
|
||||
}
|
||||
replyType, ok := mtype.In(2).(*reflect.PtrType);
|
||||
if !ok {
|
||||
log.Stderr(mname, "reply type not a pointer:", replyType.String());
|
||||
log.Stderr(mname, "reply type not a pointer:", mtype.In(2));
|
||||
continue;
|
||||
}
|
||||
if _, ok := replyType.Elem().(*reflect.StructType); !ok {
|
||||
log.Stderr(mname, "reply type not a pointer to a struct:", replyType.String());
|
||||
log.Stderr(mname, "reply type not a pointer to a struct:", replyType);
|
||||
continue;
|
||||
}
|
||||
if !isPublic(argType.Elem().Name()) {
|
||||
log.Stderr(mname, "argument type not public:", argType.String());
|
||||
log.Stderr(mname, "argument type not public:", argType);
|
||||
continue;
|
||||
}
|
||||
if !isPublic(replyType.Elem().Name()) {
|
||||
log.Stderr(mname, "reply type not public:", replyType.String());
|
||||
log.Stderr(mname, "reply type not public:", replyType);
|
||||
continue;
|
||||
}
|
||||
// Method needs one out: os.Error.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue