playlist/SoundCloud: soundcloud_parse_json() throws exception

This commit is contained in:
Max Kellermann 2018-01-11 19:59:27 +01:00
parent 8e29430f21
commit 7fe07324d7

View File

@ -221,12 +221,11 @@ static constexpr yajl_callbacks parse_callbacks = {
* Read JSON data and parse it using the given YAJL parser. * Read JSON data and parse it using the given YAJL parser.
* @param url URL of the JSON data. * @param url URL of the JSON data.
* @param handle YAJL parser handle. * @param handle YAJL parser handle.
* @return -1 on error, 0 on success.
*/ */
static int static void
soundcloud_parse_json(const char *url, Yajl::Handle &handle, soundcloud_parse_json(const char *url, Yajl::Handle &handle,
Mutex &mutex, Cond &cond) Mutex &mutex, Cond &cond)
try { {
auto input_stream = InputStream::OpenReady(url, mutex, cond); auto input_stream = InputStream::OpenReady(url, mutex, cond);
const std::lock_guard<Mutex> protect(mutex); const std::lock_guard<Mutex> protect(mutex);
@ -245,11 +244,6 @@ try {
} else } else
handle.Parse(buffer, nbytes); handle.Parse(buffer, nbytes);
} }
return 0;
} catch (const std::exception &e) {
LogError(e);
return -1;
} }
/** /**
@ -302,10 +296,7 @@ soundcloud_open_uri(const char *uri, Mutex &mutex, Cond &cond)
SoundCloudJsonData data; SoundCloudJsonData data;
Yajl::Handle handle(&parse_callbacks, nullptr, &data); Yajl::Handle handle(&parse_callbacks, nullptr, &data);
int ret = soundcloud_parse_json(u, handle, mutex, cond); soundcloud_parse_json(u, handle, mutex, cond);
if (ret == -1)
return nullptr;
data.songs.reverse(); data.songs.reverse();
return new MemorySongEnumerator(std::move(data.songs)); return new MemorySongEnumerator(std::move(data.songs));