summaryrefslogtreecommitdiff
path: root/tools/dexanalyze/dexanalyze_strings.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tools/dexanalyze/dexanalyze_strings.cc')
-rw-r--r--tools/dexanalyze/dexanalyze_strings.cc22
1 files changed, 19 insertions, 3 deletions
diff --git a/tools/dexanalyze/dexanalyze_strings.cc b/tools/dexanalyze/dexanalyze_strings.cc
index de5c34ecf4..dcadb59e35 100644
--- a/tools/dexanalyze/dexanalyze_strings.cc
+++ b/tools/dexanalyze/dexanalyze_strings.cc
@@ -119,8 +119,25 @@ class PrefixStrings {
return false;
}
const uint8_t* prefix_data = &dictionary_.prefix_data_[prefix_offset];
- return memcmp(prefix_data, data, prefix_len) == 0u &&
- memcmp(suffix_data, data + prefix_len, len - prefix_len) == 0u;
+ if ((true)) {
+ return memcmp(prefix_data, data, prefix_len) == 0u &&
+ memcmp(suffix_data, data + prefix_len, len - prefix_len) == 0u;
+ } else {
+ len -= prefix_len;
+ while (prefix_len != 0u) {
+ if (*prefix_data++ != *data++) {
+ return false;
+ }
+ --prefix_len;
+ }
+ while (len != 0u) {
+ if (*suffix_data++ != *data++) {
+ return false;
+ }
+ --len;
+ }
+ return true;
+ }
}
public:
@@ -164,7 +181,6 @@ class NormalStrings {
std::vector<uint32_t> string_offsets_;
};
-
// Node value = (distance from root) * (occurrences - 1).
class MatchTrie {
public: