mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-02-05 01:25:39 -05:00
fixed bug in search with size in MB. Caused crash due to deserialization error.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4347 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
a9b85c83ae
commit
e77913914d
@ -208,14 +208,13 @@ Expression *LinearizedExpression::toExpr(const LinearizedExpression& e,int& n_to
|
|||||||
|
|
||||||
switch(tok)
|
switch(tok)
|
||||||
{
|
{
|
||||||
case EXPR_COMP: {
|
case EXPR_DATE: {
|
||||||
LogicalOperator op = static_cast<LogicalOperator>(e._ints[n_ints++]) ;
|
RelOperator op = static_cast<RelOperator>(e._ints[n_ints++]) ;
|
||||||
|
int lv = e._ints[n_ints++] ;
|
||||||
|
int hv = e._ints[n_ints++] ;
|
||||||
|
|
||||||
Expression *e1 = toExpr(e,n_tok,n_ints,n_strings) ;
|
return new DateExpression(op,lv,hv) ;
|
||||||
Expression *e2 = toExpr(e,n_tok,n_ints,n_strings) ;
|
}
|
||||||
|
|
||||||
return new CompoundExpression(op,e1,e2) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
case EXPR_POP: {
|
case EXPR_POP: {
|
||||||
RelOperator op = static_cast<RelOperator>(e._ints[n_ints++]) ;
|
RelOperator op = static_cast<RelOperator>(e._ints[n_ints++]) ;
|
||||||
@ -231,13 +230,6 @@ Expression *LinearizedExpression::toExpr(const LinearizedExpression& e,int& n_to
|
|||||||
|
|
||||||
return new SizeExpression(op,lv,hv) ;
|
return new SizeExpression(op,lv,hv) ;
|
||||||
}
|
}
|
||||||
case EXPR_DATE: {
|
|
||||||
RelOperator op = static_cast<RelOperator>(e._ints[n_ints++]) ;
|
|
||||||
int lv = e._ints[n_ints++] ;
|
|
||||||
int hv = e._ints[n_ints++] ;
|
|
||||||
|
|
||||||
return new DateExpression(op,lv,hv) ;
|
|
||||||
}
|
|
||||||
case EXPR_HASH: {
|
case EXPR_HASH: {
|
||||||
std::list<std::string> strings ;
|
std::list<std::string> strings ;
|
||||||
StringOperator op ;
|
StringOperator op ;
|
||||||
@ -246,28 +238,7 @@ Expression *LinearizedExpression::toExpr(const LinearizedExpression& e,int& n_to
|
|||||||
readStringExpr(e,n_ints,n_strings,strings,b,op) ;
|
readStringExpr(e,n_ints,n_strings,strings,b,op) ;
|
||||||
return new HashExpression(op,strings) ;
|
return new HashExpression(op,strings) ;
|
||||||
}
|
}
|
||||||
case EXPR_EXT:
|
case EXPR_NAME: {
|
||||||
{
|
|
||||||
std::list<std::string> strings ;
|
|
||||||
StringOperator op ;
|
|
||||||
bool b ;
|
|
||||||
|
|
||||||
readStringExpr(e,n_ints,n_strings,strings,b,op) ;
|
|
||||||
|
|
||||||
return new ExtExpression(op,strings,b) ;
|
|
||||||
}
|
|
||||||
case EXPR_PATH:
|
|
||||||
{
|
|
||||||
std::list<std::string> strings ;
|
|
||||||
StringOperator op ;
|
|
||||||
bool b ;
|
|
||||||
|
|
||||||
readStringExpr(e,n_ints,n_strings,strings,b,op) ;
|
|
||||||
|
|
||||||
return new ExtExpression(op,strings,b) ;
|
|
||||||
}
|
|
||||||
case EXPR_NAME:
|
|
||||||
{
|
|
||||||
std::list<std::string> strings ;
|
std::list<std::string> strings ;
|
||||||
StringOperator op ;
|
StringOperator op ;
|
||||||
bool b ;
|
bool b ;
|
||||||
@ -276,6 +247,39 @@ Expression *LinearizedExpression::toExpr(const LinearizedExpression& e,int& n_to
|
|||||||
|
|
||||||
return new NameExpression(op,strings,b) ;
|
return new NameExpression(op,strings,b) ;
|
||||||
}
|
}
|
||||||
|
case EXPR_PATH: {
|
||||||
|
std::list<std::string> strings ;
|
||||||
|
StringOperator op ;
|
||||||
|
bool b ;
|
||||||
|
|
||||||
|
readStringExpr(e,n_ints,n_strings,strings,b,op) ;
|
||||||
|
|
||||||
|
return new ExtExpression(op,strings,b) ;
|
||||||
|
}
|
||||||
|
case EXPR_EXT: {
|
||||||
|
std::list<std::string> strings ;
|
||||||
|
StringOperator op ;
|
||||||
|
bool b ;
|
||||||
|
|
||||||
|
readStringExpr(e,n_ints,n_strings,strings,b,op) ;
|
||||||
|
|
||||||
|
return new ExtExpression(op,strings,b) ;
|
||||||
|
}
|
||||||
|
case EXPR_COMP: {
|
||||||
|
LogicalOperator op = static_cast<LogicalOperator>(e._ints[n_ints++]) ;
|
||||||
|
|
||||||
|
Expression *e1 = toExpr(e,n_tok,n_ints,n_strings) ;
|
||||||
|
Expression *e2 = toExpr(e,n_tok,n_ints,n_strings) ;
|
||||||
|
|
||||||
|
return new CompoundExpression(op,e1,e2) ;
|
||||||
|
}
|
||||||
|
case EXPR_SIZE_MB: {
|
||||||
|
RelOperator op = static_cast<RelOperator>(e._ints[n_ints++]) ;
|
||||||
|
int lv = e._ints[n_ints++] ;
|
||||||
|
int hv = e._ints[n_ints++] ;
|
||||||
|
|
||||||
|
return new SizeExpressionMB(op,lv,hv) ;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
std::cerr << "No expression match the current value " << tok << std::endl ;
|
std::cerr << "No expression match the current value " << tok << std::endl ;
|
||||||
return NULL ;
|
return NULL ;
|
||||||
|
@ -1918,6 +1918,9 @@ void RsTurtleRegExpSearchRequestItem::performLocalSearch(std::list<TurtleFileInf
|
|||||||
// to do: split search string into words.
|
// to do: split search string into words.
|
||||||
Expression *exp = LinearizedExpression::toExpr(expr) ;
|
Expression *exp = LinearizedExpression::toExpr(expr) ;
|
||||||
|
|
||||||
|
if(exp == NULL)
|
||||||
|
return ;
|
||||||
|
|
||||||
// now, search!
|
// now, search!
|
||||||
rsFiles->SearchBoolExp(exp,initialResults,DIR_FLAGS_LOCAL | DIR_FLAGS_NETWORK_WIDE);
|
rsFiles->SearchBoolExp(exp,initialResults,DIR_FLAGS_LOCAL | DIR_FLAGS_NETWORK_WIDE);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user