dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
gedcom-parse.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Protection of value in macro.
[gedcom-parse.git]
/
gedcom
/
gedcom.y
diff --git
a/gedcom/gedcom.y
b/gedcom/gedcom.y
index ef95178d08664ece62d34a5cc91a6ced0adb1415..c047b6130ecd2eeb43275e7669343abd269d48f1 100644
(file)
--- a/
gedcom/gedcom.y
+++ b/
gedcom/gedcom.y
@@
-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));
= 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) }
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;
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,
end_element(ELT_SUB_ADDR, par, $<ctxt>5,
- GEDCOM_MAKE_
NULL(val1
));
+ GEDCOM_MAKE_
STRING(val1, complete
));
CHECK0;
compat_generate_resi_end(PARENT, par);
}
CHECK0;
compat_generate_resi_end(PARENT, par);
}
@@
-1420,7
+1423,7
@@
note_line_item : /* empty */
gedcom_error(_("Missing value")); YYERROR;
}
else {
gedcom_error(_("Missing value")); YYERROR;
}
else {
- $$ = "";
+ $$ = "
-
";
}
}
| DELIM line_item
}
}
| 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: ==");
mand_line_item : /* empty */
{ if (compat_mode(C_NO_REQUIRED_VALUES)) {
gedcom_debug_print("==Val: ==");
- $$ = "";
+ $$ = "
-
";
}
else {
gedcom_error(_("Missing value")); YYERROR;
}
else {
gedcom_error(_("Missing value")); YYERROR;
@@
-3997,7
+4000,7
@@
Gedcom_ctxt ctxt_stack[MAXGEDCLEVEL+1];
void push_countarray(int level)
{
int *count = NULL;
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);
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 {
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"));
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;
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];
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;
}
free(count);
count_arrays[count_level] = NULL;
}
@@
-4069,7
+4072,7
@@
void pop_countarray()
void clean_up()
{
void clean_up()
{
- gedcom_debug_print("Cleanup countarrays
\n
");
+ gedcom_debug_print("Cleanup countarrays");
while (count_level > 0) {
pop_countarray();
--count_level;
while (count_level > 0) {
pop_countarray();
--count_level;