fix(orm): properly handle zero value scanning for pointer destinations (#5270)

This commit is contained in:
lerity-yao
2025-11-16 19:59:13 +08:00
committed by GitHub
parent 052de3b552
commit c7065171d7
2 changed files with 640 additions and 2 deletions

View File

@@ -72,7 +72,7 @@ func getTaggedFieldValueMap(v reflect.Value) (map[string]any, error) {
func getValueInterface(value reflect.Value) (any, error) {
switch value.Kind() {
case reflect.Ptr:
if !value.CanInterface() {
if !value.CanAddr() || !value.Addr().CanInterface() {
return nil, ErrNotReadableValue
}
@@ -81,7 +81,7 @@ func getValueInterface(value reflect.Value) (any, error) {
value.Set(reflect.New(baseValueType))
}
return value.Interface(), nil
return value.Addr().Interface(), nil
default:
if !value.CanAddr() || !value.Addr().CanInterface() {
return nil, ErrNotReadableValue