- index = (unsigned long) g_hash_table_lookup(variant_declaration->untagged_variant->fields_by_tag,
- (gconstpointer) (unsigned long) tag);
+ if (!g_hash_table_lookup_extended(variant_declaration->untagged_variant->fields_by_tag,
+ (gconstpointer) (unsigned long) tag,
+ &orig_key,
+ &value)) {
+ /* Cannot find matching field. */
+ fprintf(stderr, "[error] Cannot find matching field for enum field \"%s\" in variant.\n",
+ g_quark_to_string(tag));
+ return NULL;
+ }
+ index = (unsigned long) value;