Make sure that the 'string' member of an xref always contains a valid string.
[gedcom-parse.git] / gedcom / gedcom.y
index 3302c1b808fa718eab3af3e93aeae6f7992ce75b..9e684944d62578147c8f152e7c2d8751cd06ecd3 100644 (file)
@@ -761,7 +761,9 @@ head_gedc_form_sect : OPEN DELIM TAG_FORM mand_line_item
 
 /* HEAD.CHAR */
 head_char_sect : OPEN DELIM TAG_CHAR mand_line_item 
-                 { if (open_conv_to_internal($4) == 0) YYERROR;
+                 { /* Don't allow to continue if conversion context couldn't
+                     be opened */
+                  if (open_conv_to_internal($4) == 0) YYABORT;
                   $<ctxt>$ = start_element(ELT_HEAD_CHAR,
                                            PARENT, $1, $3, $4,
                                            GEDCOM_MAKE_STRING(val1, $4));
@@ -3546,7 +3548,7 @@ error_subs  : /* empty */
 error_sect  : OPEN DELIM opt_xref anytag opt_value error_subs CLOSE { }
 
 gen_sect    : OPEN DELIM opt_xref anystdtag
-              { INVALID_TAG($4); }
+              { INVALID_TAG($4.string); }
               opt_value opt_sects CLOSE
               { }
             ;
@@ -3556,7 +3558,7 @@ gen_rec : gen_rec_top
         ;
 
 gen_rec_norm : OPEN DELIM opt_xref anystdtag
-               { INVALID_TOP_TAG($4) }
+               { INVALID_TOP_TAG($4.string) }
                opt_value opt_sects CLOSE
                { }
              ;