--- psiconv/trunk/lib/psiconv/data.c 2001/01/17 00:05:08 94 +++ psiconv/trunk/lib/psiconv/data.c 2001/01/22 20:36:50 97 @@ -43,6 +43,9 @@ 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); static psiconv_texted_f psiconv_empty_texted_f(void); static psiconv_paint_data_section psiconv_empty_paint_data_section(void); @@ -544,11 +547,32 @@ 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) { + psiconv_free_sheet_formula_list(section->formulas); + free(section); + } +} + void psiconv_free_sheet_f(psiconv_sheet_f file) { if (file) { psiconv_free_page_layout_section(file->page_sec); psiconv_free_sheet_status_section(file->status_sec); + psiconv_free_sheet_workbook_section(file->workbook_sec); free(file); } } @@ -955,6 +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)))) + 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; @@ -964,7 +1008,11 @@ goto ERROR2; if (!(result->status_sec = psiconv_empty_sheet_status_section())) goto ERROR3; + if (!(result->workbook_sec = psiconv_empty_sheet_workbook_section())) + goto ERROR4; return result; +ERROR4: + psiconv_free_sheet_status_section(result->status_sec); ERROR3: psiconv_free_page_layout_section(result->page_sec); ERROR2: