Some const correctness fixes.
[gedcom-parse.git] / gedcom / gedcom.y
index ef95178d08664ece62d34a5cc91a6ced0adb1415..c047b6130ecd2eeb43275e7669343abd269d48f1 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);
                    } 
@@ -1420,7 +1423,7 @@ note_line_item : /* empty */
                       gedcom_error(_("Missing value")); YYERROR;
                     }
                     else {
-                      $$ = "";
+                      $$ = "-";
                     }
                   }
                | DELIM line_item
@@ -3741,7 +3744,7 @@ mand_pointer : /* empty */ { gedcom_error(_("Missing pointer")); YYERROR; }
 mand_line_item : /* empty */
                  { if (compat_mode(C_NO_REQUIRED_VALUES)) {
                      gedcom_debug_print("==Val: ==");
-                    $$ = "";
+                    $$ = "-";
                   }
                   else {
                     gedcom_error(_("Missing value")); YYERROR;
@@ -3997,7 +4000,7 @@ Gedcom_ctxt ctxt_stack[MAXGEDCLEVEL+1];
 void push_countarray(int level)
 {
   int *count = NULL;
-  gedcom_debug_print("Push Count level: %d, level: %d\n", count_level, level);
+  gedcom_debug_print("Push Count level: %d, level: %d", count_level, level);
   if (count_level != level + 1) {
     gedcom_error(_("Internal error: count level mismatch"));
     exit(1);
@@ -4007,7 +4010,7 @@ void push_countarray(int level)
     exit(1);
   }
   else {
-    gedcom_debug_print("calloc countarray %d\n", count_level);
+    gedcom_debug_print("calloc countarray %d", count_level);
     count = (int *)calloc(YYNTOKENS, sizeof(int));
     if (count == NULL) {
       gedcom_error(_("Internal error: count array calloc error"));
@@ -4054,14 +4057,14 @@ int check_occurrence(int tag)
 void pop_countarray()
 {
   int *count;
-  gedcom_debug_print("Pop Count level: %d\n", count_level);
+  gedcom_debug_print("Pop Count level: %d", count_level);
   if (count_level < 0) {
     gedcom_error(_("Internal error: count array underflow"));
     exit(1);
   }
   else {
     count = count_arrays[count_level];
-    gedcom_debug_print("free countarray %d\n", count_level);
+    gedcom_debug_print("free countarray %d", count_level);
     free(count);
     count_arrays[count_level] = NULL;
   }
@@ -4069,7 +4072,7 @@ void pop_countarray()
 
 void clean_up()
 {
-  gedcom_debug_print("Cleanup countarrays\n");
+  gedcom_debug_print("Cleanup countarrays");
   while (count_level > 0) {
     pop_countarray();
     --count_level;