X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=src%2Frtfread.c;h=9cb869b05a551c0b012af178c97e7d39c869aba4;hb=51eaa4354b3606c282e77efc07ae31710bba260d;hp=902ee771e1138e7e68904280f3faa6d01006a08a;hpb=51f0f8ed69b065cd2577a27c2a2911cdda243b99;p=oss%2Fcatdoc.git diff --git a/src/rtfread.c b/src/rtfread.c index 902ee77..9cb869b 100644 --- a/src/rtfread.c +++ b/src/rtfread.c @@ -171,7 +171,7 @@ int rtf_level=0; extern unsigned short int buffer[]; void add_to_buffer(int *bufptr,unsigned short int c) { buffer[++(*bufptr)]=c; - if (*bufptr > PARAGRAPH_BUFFER-2) { + if (*bufptr >= PARAGRAPH_BUFFER-2) { buffer[++(*bufptr)]=0; output_paragraph(buffer); *bufptr=-1; @@ -261,8 +261,23 @@ int parse_rtf(FILE *f) { if (data_skip_mode == 0) add_to_buffer(&bufptr,com.numarg); i=groups[group_count].uc; - while((--i)>0) - fgetc(f); + while((--i)>0) { + int c=fgetc(f); + if (c == '\\') { + c = fgetc(f); + switch (c) { + case '\\': break; + case '\'': + /* skip two hex digits */ + fgetc(f); + fgetc(f); + break; + default: + break; + } + } + } + break; case RTF_PARA: /*if (para_mode > 0) {*/