set type of servicereference to idInvalid when string parse not possible
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Mon, 20 Feb 2006 14:44:38 +0000 (14:44 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Mon, 20 Feb 2006 14:44:38 +0000 (14:44 +0000)
lib/service/service.cpp

index a490c3d..d079965 100644 (file)
@@ -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)