diff --git a/type.go b/type.go index e464e82..956b3bf 100644 --- a/type.go +++ b/type.go @@ -46,7 +46,12 @@ func scalarType(t reflect.Type) Scalar { } func scalarTypeReflect(v any) Scalar { - return scalarType(reflect.TypeOf(v)) + t := reflect.TypeOf(v) + if t == nil { + return Any + } + + return scalarType(t) } func scalarSize(t reflect.Type) int { @@ -67,7 +72,12 @@ func valueSize(v reflect.Value) int { } func valueSizeReflect(v any) int { - return valueSize(reflect.ValueOf(v)) + r := reflect.ValueOf(v) + if hasCircularReference(r) { + return 0 + } + + return valueSize(r) } func setVisited[T comparable](visited map[T]bool, k T) map[T]bool {