playlist/cue/parser: pass StringView to Feed()

This commit is contained in:
Max Kellermann 2020-10-05 20:27:31 +02:00
parent 34bb53a29f
commit e0c75da266
4 changed files with 9 additions and 8 deletions

View File

@ -21,6 +21,7 @@
#include "tag/ParseName.hxx"
#include "util/Alloc.hxx"
#include "util/StringStrip.hxx"
#include "util/StringView.hxx"
#include "util/CharUtil.hxx"
#include <cassert>
@ -271,12 +272,11 @@ CueParser::Feed2(char *p) noexcept
}
void
CueParser::Feed(const char *line) noexcept
CueParser::Feed(StringView line) noexcept
{
assert(!end);
assert(line != nullptr);
char *allocated = xstrdup(line);
char *allocated = xstrndup(line.data, line.size);
Feed2(allocated);
free(allocated);
}

View File

@ -27,6 +27,8 @@
#include <string>
#include <memory>
struct StringView;
class CueParser {
enum {
/**
@ -104,7 +106,7 @@ public:
* Feed a text line from the CUE file into the parser. Call
* Get() after this to see if a song has been finished.
*/
void Feed(const char *line) noexcept;
void Feed(StringView line) noexcept;
/**
* Tell the parser that the end of the file has been reached. Call

View File

@ -22,6 +22,7 @@
#include "../SongEnumerator.hxx"
#include "../cue/CueParser.hxx"
#include "input/TextInputStream.hxx"
#include "util/StringView.hxx"
class CuePlaylist final : public SongEnumerator {
TextInputStream tis;

View File

@ -1,8 +1,6 @@
#include "playlist/cue/CueParser.hxx"
#include "util/IterableSplitString.hxx"
#include <string>
#include <string_view>
#include "util/StringView.hxx"
extern "C" {
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
@ -15,7 +13,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
const std::string_view src{(const char *)data, size};
for (const auto line : IterableSplitString(src, '\n')) {
parser.Feed(std::string(line).c_str());
parser.Feed(line);
parser.Get();
}