diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-04-28 15:51:06 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-04-28 15:51:06 +0000 |
| commit | fd13ebee91e14b0bfe9116b379644b25e6291c4d (patch) | |
| tree | 1c4cc6011c99b339e2cf6e9d0c43a1333a559cf0 /lib/dvb/db.cpp | |
| parent | 3882e079ffa469d6d9c02c0316556598d882fb0d (diff) | |
| download | enigma2-fd13ebee91e14b0bfe9116b379644b25e6291c4d.tar.gz enigma2-fd13ebee91e14b0bfe9116b379644b25e6291c4d.zip | |
fix empty expressions in dvb list search
Diffstat (limited to 'lib/dvb/db.cpp')
| -rw-r--r-- | lib/dvb/db.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index 1f38d152..244c2f0c 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -209,6 +209,9 @@ int eDVBService::checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQ case eDVBChannelQuery::tOR: res = checkFilter(ref, *query.m_p1) || checkFilter(ref, *query.m_p2); break; + case eDVBChannelQuery::tAny: + res = 1; + break; } if (query.m_inverse) @@ -1016,6 +1019,13 @@ static int decodeType(const std::string &type) RESULT parseExpression(ePtr<eDVBChannelQuery> &res, std::list<std::string>::const_iterator begin, std::list<std::string>::const_iterator end) { std::list<std::string>::const_iterator end_of_exp; + + if (begin == end) + { + eDebug("empty expression!"); + return 0; + } + if (*begin == "(") { end_of_exp = begin; @@ -1232,6 +1242,13 @@ RESULT eDVBChannelQuery::compile(ePtr<eDVBChannelQuery> &res, std::string query) /* now we recursivly parse that. */ int r = parseExpression(res, tokens.begin(), tokens.end()); + /* we have an empty (but valid!) expression */ + if (!r && !res) + { + res = new eDVBChannelQuery(); + res->m_type = eDVBChannelQuery::tAny; + } + if (res) { res->m_sort = sort; |
