fix(AnyDataHolder): Use CopyRef to get RVTypePtr of object data

The previous method didn't work because it was making a pointer of the
RVType interface instead of the underlying data.
This commit is contained in:
Daniel López Guimaraes 2024-12-24 13:08:01 +00:00
parent 2797330f2f
commit eee4fc9e88
No known key found for this signature in database
GPG key ID: 6AC74DE3DEF050E0

View file

@ -1,7 +1,6 @@
package types
import (
"errors"
"fmt"
"strings"
)
@ -66,17 +65,14 @@ func (adh *AnyDataHolder) ExtractFrom(readable Readable) error {
return fmt.Errorf("Unknown AnyDataHolder type: %s", typeName)
}
adh.ObjectData = AnyDataHolderObjects[typeName].Copy()
ptr, ok := any(&adh.ObjectData).(RVTypePtr)
if !ok {
return errors.New("AnyDataHolder object data is not a valid RVType. Missing ExtractFrom pointer receiver")
}
ptr := AnyDataHolderObjects[typeName].CopyRef()
if err := ptr.ExtractFrom(readable); err != nil {
return fmt.Errorf("Failed to read AnyDataHolder object data. %s", err.Error())
}
adh.ObjectData = ptr.Deref()
return nil
}