--- psiconv/trunk/lib/psiconv/generate_word.c 2004/02/25 20:56:43 230 +++ psiconv/trunk/lib/psiconv/generate_word.c 2004/02/25 20:57:10 231 @@ -39,31 +39,39 @@ psiconv_progress(config,lev,0,"Writing word status section"); if (!value) { - psiconv_error(config,0,psiconv_buffer_length(buf),"Null word status section"); - return -PSICONV_E_GENERATE; + psiconv_error(config,lev,0,"Null word status section"); + res = -PSICONV_E_GENERATE; + goto ERROR; } if ((res = psiconv_write_u8(config,buf,lev+1,0x02))) - return res; + goto ERROR; if ((res = psiconv_write_u8(config,buf,lev+1,(value->show_tabs?0x01:0x00) | (value->show_spaces?0x02:0x00) | (value->show_paragraph_ends?0x04:0x00) | (value->show_line_breaks?0x08:0x00) | (value->show_hard_minus?0x20:0x00) | (value->show_hard_space?0x40:0x00)))) - return res; + goto ERROR; if ((res = psiconv_write_u8(config,buf,lev+1,(value->show_full_pictures?0x01:0x00) | (value->show_full_graphs?0x02:0x00)))) - return res; + goto ERROR; if ((res = psiconv_write_bool(config,buf,lev+1,value->show_top_toolbar))) - return res; + goto ERROR; if ((res = psiconv_write_bool(config,buf,lev+1,value->show_side_toolbar))) - return res; + goto ERROR; if ((res = psiconv_write_u8(config,buf,lev+1,(value->fit_lines_to_screen?0x08:0x00)))) - return res; + goto ERROR; if ((res = psiconv_write_u32(config,buf,lev+1,value->cursor_position))) - return res; - return psiconv_write_u32(config,buf,lev+1,value->display_size); + goto ERROR; + if ((res = psiconv_write_u32(config,buf,lev+1,value->display_size))) + goto ERROR; + psiconv_progress(config,lev,0,"End of word status section"); + return 0; + +ERROR: + psiconv_error(config,lev,0,"Writing of word status section failed"); + return res; } int psiconv_write_word_styles_section(const psiconv_config config, @@ -80,7 +88,7 @@ psiconv_progress(config,lev,0,"Writing word styles section"); if (!value || !value->normal || !value->styles) { - psiconv_error(config,0,psiconv_buffer_length(buf),"Null word styles section"); + psiconv_error(config,lev,0,"Null word styles section"); res = -PSICONV_E_GENERATE; goto ERROR1; } @@ -96,14 +104,16 @@ } - if ((res = psiconv_write_paragraph_layout_list(config,buf,lev+1,value->normal->paragraph, + if ((res = psiconv_write_paragraph_layout_list(config,buf,lev+1, + value->normal->paragraph, basepara))) goto ERROR3; /* Always generate the font for Normal */ font = basechar->font; basechar->font = NULL; - res = psiconv_write_character_layout_list(config,buf,lev+1,value->normal->character, - basechar); + res = psiconv_write_character_layout_list(config,buf,lev+1, + value->normal->character, + basechar); basechar->font = font; if (res) goto ERROR3; @@ -115,14 +125,15 @@ if ((res = psiconv_write_u8(config,buf,lev+1,0))) goto ERROR3; - if ((res = psiconv_write_u8(config,buf,lev+1,psiconv_list_length(value->styles)))) + if ((res = psiconv_write_u8(config,buf,lev+1, + psiconv_list_length(value->styles)))) goto ERROR3; for (i = 0; i < psiconv_list_length(value->styles); i++) { if (!(style = psiconv_list_get(value->styles,i))) { - psiconv_error(config,0,psiconv_buffer_length(buf),"Massive memory corruption"); + psiconv_error(config,lev,0,"Massive memory corruption"); res = -PSICONV_E_NOMEM; goto ERROR3; } @@ -137,12 +148,12 @@ goto ERROR3; for (i = 0; i < psiconv_list_length(value->styles); i++) { if (!(style = psiconv_list_get(value->styles,i))) { - psiconv_error(config,0,psiconv_buffer_length(buf),"Massive memory corruption"); + psiconv_error(config,lev,0,"Massive memory corruption"); res = -PSICONV_E_NOMEM; goto ERROR3; } if (!style->name) { - psiconv_error(config,0,psiconv_buffer_length(buf),"Null style name"); + psiconv_error(config,lev,0,"Null style name"); res = -PSICONV_E_GENERATE; goto ERROR3; } @@ -171,5 +182,9 @@ ERROR2: psiconv_free_paragraph_layout(basepara); ERROR1: + if (res) + psiconv_error(config,lev,0,"Writing of word styles section failed"); + else + psiconv_progress(config,lev,0,"End of word styles section"); return res; }