--- parser3/src/main/pa_string.C 2001/03/24 19:12:20 1.50 +++ parser3/src/main/pa_string.C 2001/03/25 08:52:36 1.52 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_string.C,v 1.50 2001/03/24 19:12:20 paf Exp $ + $Id: pa_string.C,v 1.52 2001/03/25 08:52:36 paf Exp $ */ #include "pa_config_includes.h" @@ -194,7 +194,7 @@ String& String::real_append(STRING_APPEN append_here->item.ptr=src; fsize+=append_here->item.size=size; - append_here->item.lang=tainted?UL_YES:UL_NO; + append_here->item.lang=lang; #ifndef NO_STRING_ORIGIN append_here->item.origin.file=file; append_here->item.origin.line=line; @@ -290,7 +290,7 @@ int String::cmp(const String& src) const int String::cmp(const char* b_ptr, int& partial, size_t src_size) const { size_t b_size=src_size?src_size:b_ptr?strlen(b_ptr):0; - partial=0; + partial=-1; const Chunk *a_chunk=&head; const Chunk::Row *a_row=a_chunk->rows; int a_offset=0; @@ -300,6 +300,10 @@ int String::cmp(const char* b_ptr, int& bool a_break=false; bool b_break=false; while(true) { + a_break=a_row==a_end; + if(a_break || b_break) + break; + int size_diff= (a_row->item.size-a_offset)- (b_size-b_offset); @@ -321,10 +325,6 @@ int String::cmp(const char* b_ptr, int& a_row++; a_countdown--; a_offset=0; } - a_break=a_row==a_end; - if(a_break || b_break) - break; - if(!a_countdown) { a_chunk=a_row->link; a_row=a_chunk->rows; @@ -332,11 +332,11 @@ int String::cmp(const char* b_ptr, int& } } if(a_break==b_break) // ended simultaneously - return 0; + return partial=0; else if(a_break) // first bytes equal, but a ended before b - return partial=-1; + return partial=1; else - return partial=+1; + return partial=2; } #ifndef NO_STRING_ORIGIN