diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-23 17:21:03 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-23 16:25:15 +0000 |
commit | c551f43206405019121bd2b2c93714319a0a3300 (patch) | |
tree | 1f48c30631c421fd4bbb3c36da20183c8a2ed7d7 /chromium/base/json/json_common.h | |
parent | 7961cea6d1041e3e454dae6a1da660b453efd238 (diff) |
BASELINE: Update Chromium to 79.0.3945.139
Change-Id: I336b7182fab9bca80b709682489c07db112eaca5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/base/json/json_common.h')
-rw-r--r-- | chromium/base/json/json_common.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/chromium/base/json/json_common.h b/chromium/base/json/json_common.h new file mode 100644 index 00000000000..c0fd3eab82b --- /dev/null +++ b/chromium/base/json/json_common.h @@ -0,0 +1,42 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_JSON_JSON_COMMON_H_ +#define BASE_JSON_JSON_COMMON_H_ + +#include <stddef.h> + +#include "base/logging.h" +#include "base/macros.h" + +namespace base { +namespace internal { + +// Chosen to support 99.9% of documents found in the wild late 2016. +// http://crbug.com/673263 +const size_t kAbsoluteMaxDepth = 200; + +// Simple class that checks for maximum recursion/stack overflow. +class StackMarker { + public: + StackMarker(size_t max_depth, size_t* depth) + : max_depth_(max_depth), depth_(depth) { + ++(*depth_); + DCHECK_LE(*depth_, max_depth_); + } + ~StackMarker() { --(*depth_); } + + bool IsTooDeep() const { return *depth_ >= max_depth_; } + + private: + const size_t max_depth_; + size_t* const depth_; + + DISALLOW_COPY_AND_ASSIGN(StackMarker); +}; + +} // namespace internal +} // namespace base + +#endif // BASE_JSON_JSON_COMMON_H_ |