--- parser3/src/main/pa_string.C 2001/04/04 10:50:36 1.69 +++ parser3/src/main/pa_string.C 2001/04/05 19:35:16 1.73 @@ -5,12 +5,12 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_string.C,v 1.69 2001/04/04 10:50:36 paf Exp $ + $Id: pa_string.C,v 1.73 2001/04/05 19:35:16 paf Exp $ */ #include "pa_config_includes.h" -#include +#include "pcre.h" #include "pa_pool.h" #include "pa_string.h" @@ -22,8 +22,6 @@ #include "pa_table.h" #include "pa_threads.h" -#include "pcre.h" - //#include "pa_sapi.h" // String @@ -199,7 +197,7 @@ int String::cmp(int& partial, const Stri break; if(pos+a_row->item.size > this_offset) { - if(lang!=UL_UNKNOWN && a_row->item.lang!=lang) + if(lang!=UL_UNSPECIFIED && a_row->item.lang!=lang) return -1; // wrong lang -- bail out int size_diff= @@ -279,7 +277,7 @@ int String::cmp(int& partial, const char break; if(pos+a_row->item.size > this_offset) { - if(lang!=UL_UNKNOWN && a_row->item.lang!=lang) + if(lang!=UL_UNSPECIFIED && a_row->item.lang!=lang) return -1; // wrong lang -- bail out int size_diff= @@ -491,7 +489,6 @@ static void regex_options(char *options, @verbatim pre-match/match/post-match/1/2/3/... @endverbatim - @test setlocale param to auto.p */ bool String::match(const String *aorigin, const String& regexp, @@ -500,11 +497,15 @@ bool String::match(const String *aorigin Row_action row_action, void *info) const { static const unsigned char *tables=0; { SYNCHRONIZED(true); - if(!tables) { - setlocale(LC_CTYPE, "ru"); + if(!tables) tables=pcre_maketables(); - } } + + + if(!regexp.size()) + THROW(0, 0, + aorigin, + "regexp is empty"); const char *pattern=regexp.cstr(UL_AS_IS); const char *errptr; int erroffset; @@ -522,9 +523,9 @@ bool String::match(const String *aorigin if(info_substrings<0) { (*pcre_free)(code); THROW(0, 0, - aorigin, - "pcre_info error #%d", - info_substrings); + aorigin, + "pcre_info error #%d", + info_substrings); } int startoffset=0;