--- parser3/src/main/pa_string.C 2001/05/14 13:18:07 1.82 +++ parser3/src/main/pa_string.C 2001/05/15 15:41:20 1.84 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_string.C,v 1.82 2001/05/14 13:18:07 parser Exp $ + $Id: pa_string.C,v 1.84 2001/05/15 15:41:20 parser Exp $ */ #include "pa_config_includes.h" @@ -23,10 +23,6 @@ #include "pa_table.h" #include "pa_threads.h" -//#include "pa_sapi.h" - -// String - String::String(Pool& apool, const char *src, size_t src_size, bool tainted) : Pooled(apool) { last_chunk=&head; @@ -187,16 +183,12 @@ int String::cmp(int& partial, const Stri Chunk::Row *b_end=src.append_here; size_t a_countdown=a_chunk->count; size_t b_countdown=b_chunk->count; - bool a_break=false; - bool b_break=false; size_t result; size_t pos=0; - while(true) { - a_break=a_row==a_end; - b_break=b_row==b_end; - if(a_break || b_break) - break; + bool a_break=size()==0; + bool b_break=size()==0; + if(!(a_break || b_break)) while(true) { if(pos+a_row->item.size > this_offset) { if(lang!=UL_UNSPECIFIED && a_row->item.lang!=lang) return -1; // wrong lang -- bail out @@ -229,7 +221,10 @@ int String::cmp(int& partial, const Stri pos+=a_row->item.size; a_row++; a_countdown--; a_offset=0; } - + if(b_break=b_row==b_end) { + a_break=a_row==a_end; + break; + } if(!b_countdown) { b_chunk=b_row->link; b_row=b_chunk->rows; @@ -241,6 +236,10 @@ int String::cmp(int& partial, const Stri a_row++; a_countdown--; } + if(a_break=a_row==a_end) { + b_break=b_row==b_end; + break; + } if(!a_countdown) { a_chunk=a_row->link; a_row=a_chunk->rows; @@ -269,14 +268,11 @@ int String::cmp(int& partial, const char size_t b_offset=0; Chunk::Row *a_end=append_here; size_t a_countdown=a_chunk->count; - bool a_break=false; - bool b_break=false; size_t pos=0; - while(true) { - a_break=a_row==a_end; - if(a_break || b_break) - break; + bool a_break=size()==0; + bool b_break=b_size==0; + if(!(a_break || b_break)) while(true) { if(pos+a_row->item.size > this_offset) { if(lang!=UL_UNSPECIFIED && a_row->item.lang!=lang) return -1; // wrong lang -- bail out @@ -312,6 +308,8 @@ int String::cmp(int& partial, const char a_row++; a_countdown--; } + if(a_break=a_row==a_end) + break; if(!a_countdown) { a_chunk=a_row->link; a_row=a_chunk->rows;