Fix incorrect type display on nil pointers.

This was reported by korschak as issue #4 who also pinpointed the issue
and provided a patch.
This commit is contained in:
Dave Collins 2013-01-12 23:30:04 -06:00
parent a2ceabae67
commit 389ea44d6a
2 changed files with 10 additions and 8 deletions

View File

@ -66,11 +66,11 @@ func (d *dumpState) dumpPtr(v reflect.Value) {
indirects := 0 indirects := 0
ve := v ve := v
for ve.Kind() == reflect.Ptr { for ve.Kind() == reflect.Ptr {
indirects++
if ve.IsNil() { if ve.IsNil() {
nilFound = true nilFound = true
break break
} }
indirects++
addr := ve.Pointer() addr := ve.Pointer()
pointerChain = append(pointerChain, addr) pointerChain = append(pointerChain, addr)
if pd, ok := d.pointers[addr]; ok && pd < d.depth { if pd, ok := d.pointers[addr]; ok && pd < d.depth {
@ -97,6 +97,7 @@ func (d *dumpState) dumpPtr(v reflect.Value) {
d.w.Write(closeParenBytes) d.w.Write(closeParenBytes)
// Display pointer information. // Display pointer information.
if len(pointerChain) > 0 {
d.w.Write(openParenBytes) d.w.Write(openParenBytes)
for i, addr := range pointerChain { for i, addr := range pointerChain {
if i > 0 { if i > 0 {
@ -105,6 +106,7 @@ func (d *dumpState) dumpPtr(v reflect.Value) {
printHexPtr(d.w, addr) printHexPtr(d.w, addr)
} }
d.w.Write(closeParenBytes) d.w.Write(closeParenBytes)
}
// Display dereferenced value. // Display dereferenced value.
d.w.Write(openParenBytes) d.w.Write(openParenBytes)

View File

@ -115,11 +115,11 @@ func (f *formatState) formatPtr(v reflect.Value) {
indirects := 0 indirects := 0
ve := v ve := v
for ve.Kind() == reflect.Ptr { for ve.Kind() == reflect.Ptr {
indirects++
if ve.IsNil() { if ve.IsNil() {
nilFound = true nilFound = true
break break
} }
indirects++
addr := ve.Pointer() addr := ve.Pointer()
pointerChain = append(pointerChain, addr) pointerChain = append(pointerChain, addr)
if pd, ok := f.pointers[addr]; ok && pd < f.depth { if pd, ok := f.pointers[addr]; ok && pd < f.depth {