Make sure compatibility_program is initialized to 0.
[gedcom-parse.git] / gedcom / gedcom.y
index 2b52293d16d84b0c3b2f2a6b8409e51a794ad523..f853e7d3b85c4160662bb898047c3e7ecf97bce4 100644 (file)
@@ -1234,6 +1234,8 @@ indi_addr_sect : OPEN DELIM TAG_ADDR opt_line_item
                        = start_element(ELT_SUB_ADDR,
                                        par, $1 + 1, $3, $4,
                                        GEDCOM_MAKE_NULL_OR_STRING(val2, $4));
+                     reset_buffer(&concat_buffer);
+                     safe_buf_append(&concat_buffer, $4);
                      START(ADDR, $1 + 1, $<ctxt>$);
                    }
                  else { START(ADDR, $1, NULL) }
@@ -1243,8 +1245,9 @@ indi_addr_sect : OPEN DELIM TAG_ADDR opt_line_item
                   CLOSE
                   { if (compat_mode(C_INDI_ADDR)) {
                      Gedcom_ctxt par = PARENT;
+                     char* complete = get_buf_string(&concat_buffer);
                      end_element(ELT_SUB_ADDR, par, $<ctxt>5,
-                                 GEDCOM_MAKE_NULL(val1));
+                                 GEDCOM_MAKE_STRING(val1, complete));
                      CHECK0;
                      compat_generate_resi_end(PARENT, par);
                    } 
@@ -2282,7 +2285,14 @@ cont_sect : OPEN DELIM TAG_CONT mand_line_item
             { $<ctxt>$ = start_element(ELT_SUB_CONT,
                                       PARENT, $1, $3, $4, 
                                       GEDCOM_MAKE_STRING(val1, $4));
-             SAFE_BUF_ADDCHAR(&concat_buffer, '\n');
+             if (compat_mode(C_NOTE_NO_VALUE)) {
+               char* str = get_buf_string(&concat_buffer);
+               if (str[0] != '\0')
+                 SAFE_BUF_ADDCHAR(&concat_buffer, '\n');
+             }
+             else {
+               SAFE_BUF_ADDCHAR(&concat_buffer, '\n');
+             }
              safe_buf_append(&concat_buffer, $4);
              START(CONT, $1, $<ctxt>$)  
             }