diff options
author | Ronny Krüger <rcane@rkxs.de> | 2018-04-16 09:58:24 +0200 |
---|---|---|
committer | Ronny Krüger <rcane@rkxs.de> | 2018-04-16 09:58:24 +0200 |
commit | 7d6d5f91320af20d77d57a198c54abe6e36a00ea (patch) | |
tree | a91c80c18a70f70ac5f8b94fb9951baa608d268d /src/google/protobuf/compiler/java | |
parent | 320d56c833f835f40c56bdaf2a375768cdd1b334 (diff) | |
download | protobuf-7d6d5f91320af20d77d57a198c54abe6e36a00ea.tar.gz protobuf-7d6d5f91320af20d77d57a198c54abe6e36a00ea.tar.bz2 protobuf-7d6d5f91320af20d77d57a198c54abe6e36a00ea.zip |
Fixed a Visual Studio 2017 build error. (#4488)
The current 15.6.x versions of Visual Studio 2017 contain a bug that
prevent them from compiling the following construct under certain
conditions:
std::unique_ptr<std::unique_ptr<Foo> []> foos;
This will fail to compile if Foo is an abstract class. To work-around
the problem the whole construct was change into:
std::vector<std::unique_ptr<Foo>> foos;
This not only fixes the compiler error but is also more readable than
previous version.
Diffstat (limited to 'src/google/protobuf/compiler/java')
-rw-r--r-- | src/google/protobuf/compiler/java/java_field.cc | 6 | ||||
-rw-r--r-- | src/google/protobuf/compiler/java/java_field.h | 2 | ||||
-rw-r--r-- | src/google/protobuf/compiler/java/java_file.cc | 6 | ||||
-rw-r--r-- | src/google/protobuf/compiler/java/java_file.h | 4 |
4 files changed, 7 insertions, 11 deletions
diff --git a/src/google/protobuf/compiler/java/java_field.cc b/src/google/protobuf/compiler/java/java_field.cc index d7319681..93de0229 100644 --- a/src/google/protobuf/compiler/java/java_field.cc +++ b/src/google/protobuf/compiler/java/java_field.cc @@ -211,8 +211,7 @@ template <> FieldGeneratorMap<ImmutableFieldGenerator>::FieldGeneratorMap( const Descriptor* descriptor, Context* context) : descriptor_(descriptor), - field_generators_(new std::unique_ptr< - ImmutableFieldGenerator>[descriptor->field_count()]) { + field_generators_(descriptor->field_count()) { // Construct all the FieldGenerators and assign them bit indices for their // bit fields. @@ -234,8 +233,7 @@ template <> FieldGeneratorMap<ImmutableFieldLiteGenerator>::FieldGeneratorMap( const Descriptor* descriptor, Context* context) : descriptor_(descriptor), - field_generators_(new std::unique_ptr< - ImmutableFieldLiteGenerator>[descriptor->field_count()]) { + field_generators_(descriptor->field_count()) { // Construct all the FieldGenerators and assign them bit indices for their // bit fields. int messageBitIndex = 0; diff --git a/src/google/protobuf/compiler/java/java_field.h b/src/google/protobuf/compiler/java/java_field.h index 04bbe24a..7275c099 100644 --- a/src/google/protobuf/compiler/java/java_field.h +++ b/src/google/protobuf/compiler/java/java_field.h @@ -138,7 +138,7 @@ class FieldGeneratorMap { const Descriptor* descriptor_; Context* context_; ClassNameResolver* name_resolver_; - std::unique_ptr<std::unique_ptr<FieldGeneratorType> []> field_generators_; + std::vector<std::unique_ptr<FieldGeneratorType>> field_generators_; GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap); }; diff --git a/src/google/protobuf/compiler/java/java_file.cc b/src/google/protobuf/compiler/java/java_file.cc index 5ee04e5a..d8f11d80 100644 --- a/src/google/protobuf/compiler/java/java_file.cc +++ b/src/google/protobuf/compiler/java/java_file.cc @@ -186,10 +186,8 @@ FileGenerator::FileGenerator(const FileDescriptor* file, const Options& options, bool immutable_api) : file_(file), java_package_(FileJavaPackage(file, immutable_api)), - message_generators_( - new std::unique_ptr<MessageGenerator>[file->message_type_count()]), - extension_generators_( - new std::unique_ptr<ExtensionGenerator>[file->extension_count()]), + message_generators_(file->message_type_count()), + extension_generators_(file->extension_count()), context_(new Context(file, options)), name_resolver_(context_->GetNameResolver()), options_(options), diff --git a/src/google/protobuf/compiler/java/java_file.h b/src/google/protobuf/compiler/java/java_file.h index 9ad7937c..78833a45 100644 --- a/src/google/protobuf/compiler/java/java_file.h +++ b/src/google/protobuf/compiler/java/java_file.h @@ -98,8 +98,8 @@ class FileGenerator { string java_package_; string classname_; - std::unique_ptr<std::unique_ptr<MessageGenerator> []> message_generators_; - std::unique_ptr<std::unique_ptr<ExtensionGenerator> []> extension_generators_; + std::vector<std::unique_ptr<MessageGenerator>> message_generators_; + std::vector<std::unique_ptr<ExtensionGenerator>> extension_generators_; std::unique_ptr<GeneratorFactory> generator_factory_; std::unique_ptr<Context> context_; ClassNameResolver* name_resolver_; |