From 63383fddf110e11385f48b97af8a7dc75d4f3ff4 Mon Sep 17 00:00:00 2001 From: torque <torque@1> Date: Sun, 24 Aug 2014 12:06:22 -0700 Subject: [PATCH] Perform extradata deduplication on add. Checks all existing extradata keys and values to ensure that the set that is being added doesn't already exist. --- src/ass_file.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ass_file.cpp b/src/ass_file.cpp index 21aa23eaa..bd605d9bc 100644 --- a/src/ass_file.cpp +++ b/src/ass_file.cpp @@ -229,8 +229,13 @@ void AssFile::Sort(EntryList<AssDialogue> &lst, CompFunc comp, std::set<AssDialo } } - uint32_t AssFile::AddExtradata(std::string const& key, std::string const& value) { + for (auto const& data : Extradata) { + // perform brute-force deduplication by simple key and value comparison + if (key == data.second.first && value == data.second.second) { + return data.first; + } + } // next_extradata_id must not exist assert(Extradata.find(next_extradata_id) == Extradata.end()); Extradata[next_extradata_id] = {key, value}; -- GitLab