Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: third_party/protobuf/src/google/protobuf/stubs/structurally_valid.cc

Issue 2885223002: Protobuf: Remove protobuf globals patch (Closed)
Patch Set: typo Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2005-2008 Google Inc. All Rights Reserved. 1 // Copyright 2005-2008 Google Inc. All Rights Reserved.
2 // Author: jrm@google.com (Jim Meehan) 2 // Author: jrm@google.com (Jim Meehan)
3 3
4 #include <google/protobuf/stubs/common.h> 4 #include <google/protobuf/stubs/common.h>
5 5
6 #include <google/protobuf/stubs/stringpiece.h> 6 #include <google/protobuf/stubs/stringpiece.h>
7 7
8 namespace google { 8 namespace google {
9 namespace protobuf { 9 namespace protobuf {
10 namespace internal { 10 namespace internal {
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 *bytes_consumed = src - isrc; 504 *bytes_consumed = src - isrc;
505 return exit_reason; 505 return exit_reason;
506 } 506 }
507 507
508 // Hack: On some compilers the static tables are initialized at startup. 508 // Hack: On some compilers the static tables are initialized at startup.
509 // We can't use them until they are initialized. However, some Protocol 509 // We can't use them until they are initialized. However, some Protocol
510 // Buffer parsing happens at static init time and may try to validate 510 // Buffer parsing happens at static init time and may try to validate
511 // UTF-8 strings. Since UTF-8 validation is only used for debugging 511 // UTF-8 strings. Since UTF-8 validation is only used for debugging
512 // anyway, we simply always return success if initialization hasn't 512 // anyway, we simply always return success if initialization hasn't
513 // occurred yet. 513 // occurred yet.
514 extern bool cr_module_initialized_; 514 namespace {
515
516 bool module_initialized_ = false;
517
518 struct InitDetector {
519 InitDetector() {
520 module_initialized_ = true;
521 }
522 };
523 InitDetector init_detector;
524
525 } // namespace
515 526
516 bool IsStructurallyValidUTF8(const char* buf, int len) { 527 bool IsStructurallyValidUTF8(const char* buf, int len) {
517 if (!cr_module_initialized_) return true; 528 if (!module_initialized_) return true;
518 529
519 int bytes_consumed = 0; 530 int bytes_consumed = 0;
520 UTF8GenericScanFastAscii(&utf8acceptnonsurrogates_obj, 531 UTF8GenericScanFastAscii(&utf8acceptnonsurrogates_obj,
521 buf, len, &bytes_consumed); 532 buf, len, &bytes_consumed);
522 return (bytes_consumed == len); 533 return (bytes_consumed == len);
523 } 534 }
524 535
525 int UTF8SpnStructurallyValid(const StringPiece& str) { 536 int UTF8SpnStructurallyValid(const StringPiece& str) {
526 if (!cr_module_initialized_) return str.size(); 537 if (!module_initialized_) return str.size();
527 538
528 int bytes_consumed = 0; 539 int bytes_consumed = 0;
529 UTF8GenericScanFastAscii(&utf8acceptnonsurrogates_obj, 540 UTF8GenericScanFastAscii(&utf8acceptnonsurrogates_obj,
530 str.data(), str.size(), &bytes_consumed); 541 str.data(), str.size(), &bytes_consumed);
531 return bytes_consumed; 542 return bytes_consumed;
532 } 543 }
533 544
534 // Coerce UTF-8 byte string in src_str to be 545 // Coerce UTF-8 byte string in src_str to be
535 // a structurally-valid equal-length string by selectively 546 // a structurally-valid equal-length string by selectively
536 // overwriting illegal bytes with replace_char (typically blank). 547 // overwriting illegal bytes with replace_char (typically blank).
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 src += n; 579 src += n;
569 dst += n; 580 dst += n;
570 } 581 }
571 } 582 }
572 return idst; 583 return idst;
573 } 584 }
574 585
575 } // namespace internal 586 } // namespace internal
576 } // namespace protobuf 587 } // namespace protobuf
577 } // namespace google 588 } // namespace google
OLDNEW
« no previous file with comments | « third_party/protobuf/src/google/protobuf/stubs/common.cc ('k') | third_party/protobuf/src/google/protobuf/stubs/strutil.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698