goprotobuf: be honest about types in encode helpers

R=golang-dev, gri
CC=golang-dev
http://codereview.appspot.com/5312047
diff --git a/proto/encode.go b/proto/encode.go
index 5cd1c65..ae3820b 100644
--- a/proto/encode.go
+++ b/proto/encode.go
@@ -217,12 +217,12 @@
 
 // Encode a bool.
 func (o *Buffer) enc_bool(p *Properties, base uintptr) os.Error {
-	v := *(**uint8)(unsafe.Pointer(base + p.offset))
+	v := *(**bool)(unsafe.Pointer(base + p.offset))
 	if v == nil {
 		return ErrNil
 	}
-	x := *v
-	if x != 0 {
+	x := 0
+	if *v {
 		x = 1
 	}
 	o.buf = append(o.buf, p.tagcode...)
@@ -232,7 +232,7 @@
 
 // Encode an int32.
 func (o *Buffer) enc_int32(p *Properties, base uintptr) os.Error {
-	v := *(**uint32)(unsafe.Pointer(base + p.offset))
+	v := *(**int32)(unsafe.Pointer(base + p.offset))
 	if v == nil {
 		return ErrNil
 	}
@@ -244,7 +244,7 @@
 
 // Encode an int64.
 func (o *Buffer) enc_int64(p *Properties, base uintptr) os.Error {
-	v := *(**uint64)(unsafe.Pointer(base + p.offset))
+	v := *(**int64)(unsafe.Pointer(base + p.offset))
 	if v == nil {
 		return ErrNil
 	}