--- parser3/src/classes/table.C 2016/09/21 00:08:38 1.328 +++ parser3/src/classes/table.C 2016/09/21 15:35:10 1.332 @@ -22,7 +22,7 @@ #define USE_STRINGSTREAM #endif -volatile const char * IDENT_TABLE_C="$Id: table.C,v 1.328 2016/09/21 00:08:38 moko Exp $"; +volatile const char * IDENT_TABLE_C="$Id: table.C,v 1.332 2016/09/21 15:35:10 moko Exp $"; // class @@ -160,10 +160,12 @@ public: String *extract(char *pos){ String *result=new String; - // first: their langs - result->langs.append(result->body, langs, pos-base, strlen(pos)); - // next: letters themselves - result->body=Body(pos); + if(size_t len=strlen(pos)){ + // first: their langs + result->langs.append(result->body, langs, pos-base, len); + // next: letters themselves + result->body=Body(pos); + } return result; } }; @@ -201,7 +203,7 @@ static lsplit_sresult lsplit(char** stri *(pos++)=0; result.append(helper.extract(*string_ref)); if(*pos==encloser && helper.check_lang(pos)){ // double-encloser stands for encloser - *string_ref=pos+1; + *string_ref=pos++; } else { *string_ref=pos; break; @@ -361,12 +363,12 @@ static lsplit_result lsplit(char** strin *write++=c; } - // we are no longer enclosed, searching for delimiter, skipping extra enclosers + // we are no longer enclosed, searching for delimiter while(c=*read++) { if(c==delims[0] || c==delims[1]) { result.delim=c; break; - } else if(c!=encloser) + } else *write++=c; } @@ -1073,7 +1075,7 @@ static void _sort(Request& r, MethodPara if(r.charsets.source().NAME()=="KOI8-R" && key_values_are_strings) { for(i=0; iis_empty()? 0 : rownum_var_name; + value_var_name=value_var_name->is_empty()? 0 : value_var_name; Value* var_context=r.get_method_frame()->caller();