aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2025-01-10 14:46:57 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2025-01-10 15:07:28 +0300
commitca88b54ddb0c842692cc61130662bf07c109c1a3 (patch)
tree385b716697424b61582e58c8244500e1781c170e /contrib/libs
parenta4609b4071a963b34a56c7d8d032a24963b56477 (diff)
downloadydb-ca88b54ddb0c842692cc61130662bf07c109c1a3.tar.gz
Update contrib/libs/simdjson to 3.11.5
## What's Changed * Patch for bug #2322 reported by @TOETOE55 commit_hash:2218e3d96d46ccc38a6ada55dcb6b9ab98c731eb
Diffstat (limited to 'contrib/libs')
-rw-r--r--contrib/libs/simdjson/.yandex_meta/override.nix4
-rw-r--r--contrib/libs/simdjson/include/simdjson/generic/ondemand/raw_json_string-inl.h49
-rw-r--r--contrib/libs/simdjson/include/simdjson/simdjson_version.h4
-rw-r--r--contrib/libs/simdjson/ya.make4
4 files changed, 32 insertions, 29 deletions
diff --git a/contrib/libs/simdjson/.yandex_meta/override.nix b/contrib/libs/simdjson/.yandex_meta/override.nix
index 0fac8d7ba0..eba60dbb21 100644
--- a/contrib/libs/simdjson/.yandex_meta/override.nix
+++ b/contrib/libs/simdjson/.yandex_meta/override.nix
@@ -1,11 +1,11 @@
pkgs: attrs: with pkgs; rec {
- version = "3.11.4";
+ version = "3.11.5";
src = fetchFromGitHub {
owner = "simdjson";
repo = "simdjson";
rev = "v${version}";
- hash = "sha256-mcsMp9P9+3ACHkykJitHADoZ35kBeUza2LN+EPnq8RU=";
+ hash = "sha256-p7xRrdYZoWXVsuSF45GvB3pw5Ndxpyq/Hi2Uka3mUdQ=";
};
cmakeFlags = attrs.cmakeFlags ++ [
diff --git a/contrib/libs/simdjson/include/simdjson/generic/ondemand/raw_json_string-inl.h b/contrib/libs/simdjson/include/simdjson/generic/ondemand/raw_json_string-inl.h
index 5b814dd801..6d36a3741e 100644
--- a/contrib/libs/simdjson/include/simdjson/generic/ondemand/raw_json_string-inl.h
+++ b/contrib/libs/simdjson/include/simdjson/generic/ondemand/raw_json_string-inl.h
@@ -20,36 +20,39 @@ simdjson_inline const char * raw_json_string::raw() const noexcept { return rein
simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(std::string_view target) noexcept {
size_t pos{0};
- // if the content has no escape character, just scan through it quickly!
- for(;pos < target.size() && target[pos] != '\\';pos++) {}
- // slow path may begin.
- bool escaping{false};
- for(;pos < target.size();pos++) {
- if((target[pos] == '"') && !escaping) {
- return false;
- } else if(target[pos] == '\\') {
- escaping = !escaping;
- } else {
- escaping = false;
+ while(pos < target.size()) {
+ pos = target.find('"', pos);
+ if(pos == std::string_view::npos) { return true; }
+ if(pos != 0 && target[pos-1] != '\\') { return false; }
+ if(pos > 1 && target[pos-2] == '\\') {
+ size_t backslash_count{2};
+ for(size_t i = 3; i <= pos; i++) {
+ if(target[pos-i] == '\\') { backslash_count++; }
+ else { break; }
+ }
+ if(backslash_count % 2 == 0) { return false; }
}
+ pos++;
}
return true;
}
simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(const char* target) noexcept {
size_t pos{0};
- // if the content has no escape character, just scan through it quickly!
- for(;target[pos] && target[pos] != '\\';pos++) {}
- // slow path may begin.
- bool escaping{false};
- for(;target[pos];pos++) {
- if((target[pos] == '"') && !escaping) {
- return false;
- } else if(target[pos] == '\\') {
- escaping = !escaping;
- } else {
- escaping = false;
+ while(target[pos]) {
+ const char * result = strchr(target+pos, '"');
+ if(result == nullptr) { return true; }
+ pos = result - target;
+ if(pos != 0 && target[pos-1] != '\\') { return false; }
+ if(pos > 1 && target[pos-2] == '\\') {
+ size_t backslash_count{2};
+ for(size_t i = 3; i <= pos; i++) {
+ if(target[pos-i] == '\\') { backslash_count++; }
+ else { break; }
+ }
+ if(backslash_count % 2 == 0) { return false; }
}
+ pos++;
}
return true;
}
@@ -61,7 +64,7 @@ simdjson_inline bool raw_json_string::unsafe_is_equal(size_t length, std::string
}
simdjson_inline bool raw_json_string::unsafe_is_equal(std::string_view target) const noexcept {
- // Assumptions: does not contain unescaped quote characters, and
+ // Assumptions: does not contain unescaped quote characters("), and
// the raw content is quote terminated within a valid JSON string.
if(target.size() <= SIMDJSON_PADDING) {
return (raw()[target.size()] == '"') && !memcmp(raw(), target.data(), target.size());
diff --git a/contrib/libs/simdjson/include/simdjson/simdjson_version.h b/contrib/libs/simdjson/include/simdjson/simdjson_version.h
index 0f102f299d..bb4e157d25 100644
--- a/contrib/libs/simdjson/include/simdjson/simdjson_version.h
+++ b/contrib/libs/simdjson/include/simdjson/simdjson_version.h
@@ -4,7 +4,7 @@
#define SIMDJSON_SIMDJSON_VERSION_H
/** The version of simdjson being used (major.minor.revision) */
-#define SIMDJSON_VERSION "3.11.4"
+#define SIMDJSON_VERSION "3.11.5"
namespace simdjson {
enum {
@@ -19,7 +19,7 @@ enum {
/**
* The revision (major.minor.REVISION) of simdjson being used.
*/
- SIMDJSON_VERSION_REVISION = 4
+ SIMDJSON_VERSION_REVISION = 5
};
} // namespace simdjson
diff --git a/contrib/libs/simdjson/ya.make b/contrib/libs/simdjson/ya.make
index f9f60907d8..52bef657ae 100644
--- a/contrib/libs/simdjson/ya.make
+++ b/contrib/libs/simdjson/ya.make
@@ -10,9 +10,9 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-VERSION(3.11.4)
+VERSION(3.11.5)
-ORIGINAL_SOURCE(https://github.com/simdjson/simdjson/archive/v3.11.4.tar.gz)
+ORIGINAL_SOURCE(https://github.com/simdjson/simdjson/archive/v3.11.5.tar.gz)
ADDINCL(
GLOBAL contrib/libs/simdjson/include