From c7c6b2c32141627a44edfcd6cfddecd1724156f1 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sat, 26 Sep 2009 22:20:05 +0200 Subject: [PATCH] lyrics: check if data returned by curl contains opening and closing tag --- src/lyrics.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lyrics.cpp b/src/lyrics.cpp index d3ddaa5f..de97b8ce 100644 --- a/src/lyrics.cpp +++ b/src/lyrics.cpp @@ -235,11 +235,20 @@ void *Lyrics::Get(void *screen_void_ptr) } size_t a, b; - a = result.find(my_lyrics->tag_open)+strlen(my_lyrics->tag_open); - b = result.find(my_lyrics->tag_close, a); - result = result.substr(a, b-a); + bool parse_failed = 0; - if (my_lyrics->not_found(result)) + if ((a = result.find(my_lyrics->tag_open)) != std::string::npos) + { + a += strlen(my_lyrics->tag_open); + if ((b = result.find(my_lyrics->tag_close, a)) != std::string::npos) + result = result.substr(a, b-a); + else + parse_failed = 1; + } + else + parse_failed = 1; + + if (parse_failed || my_lyrics->not_found(result)) { *screen->w << "Not found"; Ready = 1;