Skip to content

Commit 2699756

Browse files
authored
Fixed go incompatibility with pre-1.21 go version
Replaced SetZero and Grow with 1.18 compatible code
1 parent 94cceb5 commit 2699756

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file.
33

44
The format is based on [Keep a Changelog](http://keepachangelog.com/).
55

6+
## 1.4.6 - 2024-08-12
7+
8+
### Fixed
9+
- Fixed go incompatibility with pre-1.21 go version, stemming from 1.4.4 and 1.4.5 releases.
10+
611
## 1.4.5 - 2024-08-12
712

813
### Fixed

nosqldb/internal/proto/binary/struct_decoder.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func (sr *structDecoder) decodeMap(m map[string]interface{}, v reflect.Value) er
7777
if !mapElem.IsValid() {
7878
mapElem = reflect.New(elemType).Elem()
7979
} else {
80-
mapElem.SetZero()
80+
mapElem.Set(reflect.Zero(elemType))
8181
}
8282
subv = mapElem
8383
} else {
@@ -144,7 +144,9 @@ func (sr *structDecoder) decodeArray(a []types.FieldValue, v reflect.Value) erro
144144

145145
if v.Kind() == reflect.Slice {
146146
if size >= v.Cap() {
147-
v.Grow(size - v.Cap())
147+
newv := reflect.MakeSlice(v.Type(), v.Len(), size)
148+
reflect.Copy(newv, v)
149+
v.Set(newv)
148150
}
149151
if size > v.Len() {
150152
v.SetLen(size)
@@ -174,13 +176,13 @@ func (sr *structDecoder) decodeFieldValue(mv any, v reflect.Value) error {
174176
// Handle nil values differently
175177
if mv == nil {
176178
v = indirect(v, true)
177-
v.SetZero()
179+
v.Set(reflect.Zero(v.Type()))
178180
return nil
179181
}
180182
switch mv.(type) {
181183
case *types.EmptyValue, *types.NullValue, *types.JSONNullValue:
182184
v = indirect(v, true)
183-
v.SetZero()
185+
v.Set(reflect.Zero(v.Type()))
184186
return nil
185187
}
186188

nosqldb/internal/proto/binary/struct_reader.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func (sr *StructReader) ReadMap(v reflect.Value) error {
131131
if !mapElem.IsValid() {
132132
mapElem = reflect.New(elemType).Elem()
133133
} else {
134-
mapElem.SetZero()
134+
mapElem.Set(reflect.Zero(elemType))
135135
}
136136
subv = mapElem
137137
} else {
@@ -226,7 +226,9 @@ func (sr *StructReader) ReadArray(v reflect.Value) error {
226226

227227
if v.Kind() == reflect.Slice {
228228
if size >= v.Cap() {
229-
v.Grow(size - v.Cap())
229+
newv := reflect.MakeSlice(v.Type(), v.Len(), size)
230+
reflect.Copy(newv, v)
231+
v.Set(newv)
230232
}
231233
if size > v.Len() {
232234
v.SetLen(size)
@@ -280,10 +282,10 @@ func (sr *StructReader) ReadFieldValue(v reflect.Value) error {
280282
return nil
281283
}
282284
v = indirect(v, true)
283-
v.SetZero()
285+
v.Set(reflect.Zero(v.Type()))
284286
//switch v.Kind() {
285287
//case reflect.Interface, reflect.Pointer, reflect.Map, reflect.Slice:
286-
//v.SetZero()
288+
//v.Set(reflect.Zero(v.Type()))
287289
// otherwise, ignore null for primitives/string (same as json library)
288290
//}
289291
return nil
@@ -373,7 +375,7 @@ func (sr *StructReader) ReadFieldValue(v reflect.Value) error {
373375
return nil
374376
}
375377
if s == nil {
376-
v.SetZero()
378+
v.Set(reflect.Zero(v.Type()))
377379
} else {
378380
if v.Type().Kind() == reflect.Interface {
379381
v.Set(reflect.ValueOf(s))

0 commit comments

Comments
 (0)