Browse Source

Fix bug https://github.com/odin-lang/Odin/issues/3173

blob1807 1 year ago
parent
commit
14ee2181cb
1 changed files with 9 additions and 0 deletions
  1. 9 0
      core/encoding/json/marshal.odin

+ 9 - 0
core/encoding/json/marshal.odin

@@ -377,6 +377,15 @@ marshal_to_writer :: proc(w: io.Writer, v: any, opt: ^Marshal_Options) -> (err:
 		opt_write_end(w, opt, '}') or_return
 
 	case runtime.Type_Info_Union:
+        // check for empty unions
+        if len(info.variants) == 0 {
+            io.write_string(w, "null") or_return
+            return
+        }
+        if info.tag_type == nil {
+            panic("Union tag type is nil.")
+        }
+
 		tag_ptr := uintptr(v.data) + info.tag_offset
 		tag_any := any{rawptr(tag_ptr), info.tag_type.id}