diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-02-20 14:44:38 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-02-20 14:44:38 +0000 |
| commit | 2dc80922a3f96b46b95bf235ea05cf19effa7d3e (patch) | |
| tree | 199503a9bd52ca185dff85168b2db423dc13732b /lib/service/service.cpp | |
| parent | f61e4ec73535adad77e444b60090f101b2a19b05 (diff) | |
| download | enigma2-2dc80922a3f96b46b95bf235ea05cf19effa7d3e.tar.gz enigma2-2dc80922a3f96b46b95bf235ea05cf19effa7d3e.zip | |
set type of servicereference to idInvalid when string parse not possible
Diffstat (limited to 'lib/service/service.cpp')
| -rw-r--r-- | lib/service/service.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/service/service.cpp b/lib/service/service.cpp index a490c3d7..d079965b 100644 --- a/lib/service/service.cpp +++ b/lib/service/service.cpp @@ -9,11 +9,14 @@ eServiceReference::eServiceReference(const std::string &string) const char *c=string.c_str(); int pathl=0; - if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7], &pathl) < 8 ) + if (!string.length()) + type = idInvalid; + else if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7], &pathl) < 8 ) { memset( data, 0, sizeof(data) ); eDebug("find old format eServiceReference string"); - sscanf(c, "%d:%d:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &pathl); + if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &pathl) < 2 ) + type = idInvalid; } if (pathl) |
