--- psiconv/trunk/lib/psiconv/data.c 2001/01/21 00:06:56 96 +++ psiconv/trunk/lib/psiconv/data.c 2001/01/22 20:36:50 97 @@ -43,6 +43,7 @@ static psiconv_word_status_section psiconv_empty_word_status_section(void); static psiconv_word_f psiconv_empty_word_f(void); static psiconv_sheet_status_section psiconv_empty_sheet_status_section(void); +static psiconv_sheet_formula_list psiconv_empty_sheet_formula_list(void); static psiconv_sheet_workbook_section psiconv_empty_sheet_workbook_section(void); static psiconv_sheet_f psiconv_empty_sheet_f(void); @@ -546,10 +547,24 @@ free(section); } +void psiconv_free_sheet_formula(psiconv_sheet_formula formula) +{ + if (formula) + free(formula); +} + +void psiconv_free_sheet_formula_list(psiconv_sheet_formula_list list) +{ + if (list) + psiconv_list_free(list); +} + void psiconv_free_sheet_workbook_section(psiconv_sheet_workbook_section section) { - if (section) + if (section) { + psiconv_free_sheet_formula_list(section->formulas); free(section); + } } void psiconv_free_sheet_f(psiconv_sheet_f file) @@ -964,14 +979,26 @@ return result; } +psiconv_sheet_formula_list psiconv_empty_sheet_formula_list(void) +{ + return psiconv_list_new(sizeof(struct psiconv_sheet_formula_s)); +} + psiconv_sheet_workbook_section psiconv_empty_sheet_workbook_section(void) { psiconv_sheet_workbook_section result; if (!(result = malloc(sizeof(*result)))) - return NULL; + goto ERROR1; + if (!(result->formulas = psiconv_empty_sheet_formula_list())) + goto ERROR2; return result; +ERROR2: + free(result); +ERROR1: + return NULL; } + psiconv_sheet_f psiconv_empty_sheet_f(void) { psiconv_sheet_f result;