--- parser3/src/classes/string.C 2002/08/06 12:48:14 1.115 +++ parser3/src/classes/string.C 2002/08/15 10:38:18 1.117 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_STRING_C="$Date: 2002/08/06 12:48:14 $"; +static const char* IDENT_STRING_C="$Date: 2002/08/15 10:38:18 $"; #include "classes.h" #include "pa_request.h" @@ -105,9 +105,9 @@ static void _mid(Request& r, const Strin Pool& pool=r.pool(); const String& string=*r.self->get_string(); - size_t p=(size_t)params->as_int(0, "p must be int", r); + size_t p=(size_t)max(0, params->as_int(0, "p must be int", r)); size_t n=params->size()>1? - (size_t)params->as_int(1, "n must be int", r):string.size(); + (size_t)max(0, params->as_int(1, "n must be int", r)):string.size(); r.write_assign_lang(string.mid(p, p+n)); } @@ -353,16 +353,10 @@ const String* sql_result_string(Request& const char *statement_cstr= statement_string.cstr(String::UL_UNSPECIFIED, r.connection(&method_name)); String_sql_event_handlers handlers(pool, statement_string, statement_cstr); - try { - r.connection(&method_name)->query( - statement_cstr, offset, limit, - handlers); - } catch(const Exception& e) { // query problem - // give more specific source [were url] - throw Exception("sql.execute", - &statement_string, - "%s", e.comment()); - } + r.connection(&method_name)->query( + statement_cstr, offset, limit, + handlers, + statement_string); if(!handlers.got_cell) return 0; // no lines, caller should return second param[default value]