playlist/SoundCloud: soundcloud_parse_json() throws exception
This commit is contained in:
parent
8e29430f21
commit
7fe07324d7
@ -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));
|
||||||
|
Loading…
Reference in New Issue
Block a user