summaryrefslogtreecommitdiff
path: root/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-04-12 12:19:22 +0200
committerGitHub <noreply@github.com>2021-04-12 12:19:22 +0200
commit0ee1da50f5e221383c236ccee258cb7592ccabd6 (patch)
tree08b3798ab08a621920eff4d1f6a3a5f940d3a944 /vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go
parent669311d8d8a8881571ccc81ce48b9202b15b9def (diff)
parent14375f35ee00c16327edcd0f5883cc66810fc7db (diff)
downloadpodman-0ee1da50f5e221383c236ccee258cb7592ccabd6.tar.gz
podman-0ee1da50f5e221383c236ccee258cb7592ccabd6.tar.bz2
podman-0ee1da50f5e221383c236ccee258cb7592ccabd6.zip
Merge pull request #9981 from containers/dependabot/go_modules/k8s.io/api-0.21.0
Bump k8s.io/api from 0.20.5 to 0.21.0
Diffstat (limited to 'vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go')
-rw-r--r--vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go
index 49e6dd169..a5a467c0f 100644
--- a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go
+++ b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go
@@ -70,11 +70,11 @@ func (f *FieldCacheEntry) CanOmit(fieldVal reflect.Value) bool {
return f.isOmitEmpty && (safeIsNil(fieldVal) || isZero(fieldVal))
}
-// GetUsing returns the field identified by this FieldCacheEntry from the provided struct.
+// GetFrom returns the field identified by this FieldCacheEntry from the provided struct.
func (f *FieldCacheEntry) GetFrom(structVal reflect.Value) reflect.Value {
// field might be nested within 'inline' structs
for _, elem := range f.fieldPath {
- structVal = structVal.FieldByIndex(elem)
+ structVal = dereference(structVal).FieldByIndex(elem)
}
return structVal
}
@@ -150,7 +150,11 @@ func buildStructCacheEntry(t reflect.Type, infos map[string]*FieldCacheEntry, fi
continue
}
if isInline {
- buildStructCacheEntry(field.Type, infos, append(fieldPath, field.Index))
+ e := field.Type
+ if field.Type.Kind() == reflect.Ptr {
+ e = field.Type.Elem()
+ }
+ buildStructCacheEntry(e, infos, append(fieldPath, field.Index))
continue
}
info := &FieldCacheEntry{JsonName: jsonName, isOmitEmpty: isOmitempty, fieldPath: append(fieldPath, field.Index), fieldType: field.Type}