Skip to content

Commit

Permalink
Panic on unexpecting nil object
Browse files Browse the repository at this point in the history
  • Loading branch information
diamondburned committed Sep 21, 2021
1 parent 9e056b1 commit 1988d98
Show file tree
Hide file tree
Showing 297 changed files with 3,468 additions and 729 deletions.
8 changes: 7 additions & 1 deletion gir/girgen/types/typeconv/valueconverted.go
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,13 @@ func (value *ValueConverted) cgoSetObject(conv *Converter) bool {
value.header.NeedsExternGLib()
value.p.Descend()
value.p.LineTmpl(m, `
object := externglib.<.Func>(unsafe.Pointer(<.Value.InPtr 1><.Value.InName>))
objptr := unsafe.Pointer(<.Value.InPtr 1><.Value.InName>)
<if not (or .Value.Optional .Value.Nullable) ->
if objptr == nil {
panic("object of type <.GoType> is nil")
}
<end>
object := externglib.<.Func>(objptr)
rv, ok := (<.Value.OutPtr 0>externglib.CastObject(object)).(<.Value.Out.Type>)
if !ok {
panic("object of type " + object.TypeFromInstance().String() + " is not <.GoType>")
Expand Down
5 changes: 5 additions & 0 deletions pkg/core/glib/glib.go
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,11 @@ func newObject(ptr unsafe.Pointer, take bool) *Object {

// Cast casts v to the concrete Go type (e.g. *Object to *gtk.Entry).
func (v *Object) Cast() Objector {
if v == nil {
// nil-typed interface != non-nil-typed nil-value interface
return nil
}

var gvalue C.GValue

C.g_value_init_from_instance(&gvalue, C.gpointer(v.Native()))
Expand Down
25 changes: 21 additions & 4 deletions pkg/gdk/v3/gdk.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 30 additions & 7 deletions pkg/gdk/v3/gdkdevice.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 12 additions & 2 deletions pkg/gdk/v3/gdkdevicemanager.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 30 additions & 6 deletions pkg/gdk/v3/gdkdisplay.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion pkg/gdk/v3/gdkdnd.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion pkg/gdk/v3/gdkdrawingcontext.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 1988d98

Please sign in to comment.