Message ID | 20240419105037.700283-1-george.dunlap@cloud.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/3] tools/golang: When returning pointers, actually allocate structrues | expand |
Thank you for the fast response, George. I can confirm that I can call all three functions without errors now and this patch fixes the errors I encountered. Am 19. April 2024 12:50:35 MESZ schrieb George Dunlap <george.dunlap@cloud.com>: >In a handful of cases, it was decided to return a pointer to a >structure rather than the plain structure itself, due to the size. >However, in these cases the structure was never allocated, leading to >a nil pointer exception when calling the relevant `fromC` method. > >Allocate structures before attempting to fill them in. > >Reported-by: Tobias Fitschen <tobias.fitschen@posteo.de> >Signed-off-by: George Dunlap <george.dunlap@cloud.com> >--- >This has been compile-tested only; Tobias, I'd appreciate a test if you get a chance. > >CC: Nick Rosbrook <rosbrookn@gmail.com> >CC: Anthony PERARD <anthony.perard@citrix.com> >--- > tools/golang/xenlight/xenlight.go | 3 +++ > 1 file changed, 3 insertions(+) > >diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go >index a45c636952..d793f172e5 100644 >--- a/tools/golang/xenlight/xenlight.go >+++ b/tools/golang/xenlight/xenlight.go >@@ -999,6 +999,7 @@ func (ctx *Context) GetPhysinfo() (physinfo *Physinfo, err error) { > err = Error(ret) > return > } >+ physinfo = &Physinfo{} > err = physinfo.fromC(&cphys) > > return >@@ -1010,6 +1011,7 @@ func (ctx *Context) GetVersionInfo() (info *VersionInfo, err error) { > > cinfo = C.libxl_get_version_info(ctx.ctx) > >+ info = &VersionInfo{} > err = info.fromC(cinfo) > > return >@@ -1027,6 +1029,7 @@ func (ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) { > return > } > >+ di = &Dominfo{} > err = di.fromC(&cdi) > > return >-- >2.25.1 >
diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go index a45c636952..d793f172e5 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -999,6 +999,7 @@ func (ctx *Context) GetPhysinfo() (physinfo *Physinfo, err error) { err = Error(ret) return } + physinfo = &Physinfo{} err = physinfo.fromC(&cphys) return @@ -1010,6 +1011,7 @@ func (ctx *Context) GetVersionInfo() (info *VersionInfo, err error) { cinfo = C.libxl_get_version_info(ctx.ctx) + info = &VersionInfo{} err = info.fromC(cinfo) return @@ -1027,6 +1029,7 @@ func (ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) { return } + di = &Dominfo{} err = di.fromC(&cdi) return
In a handful of cases, it was decided to return a pointer to a structure rather than the plain structure itself, due to the size. However, in these cases the structure was never allocated, leading to a nil pointer exception when calling the relevant `fromC` method. Allocate structures before attempting to fill them in. Reported-by: Tobias Fitschen <tobias.fitschen@posteo.de> Signed-off-by: George Dunlap <george.dunlap@cloud.com> --- This has been compile-tested only; Tobias, I'd appreciate a test if you get a chance. CC: Nick Rosbrook <rosbrookn@gmail.com> CC: Anthony PERARD <anthony.perard@citrix.com> --- tools/golang/xenlight/xenlight.go | 3 +++ 1 file changed, 3 insertions(+)