aboutsummaryrefslogtreecommitdiff
path: root/src/google/protobuf/compiler/java
diff options
context:
space:
mode:
authorRonny Krüger <rcane@rkxs.de>2018-04-16 09:58:24 +0200
committerRonny Krüger <rcane@rkxs.de>2018-04-16 09:58:24 +0200
commit7d6d5f91320af20d77d57a198c54abe6e36a00ea (patch)
treea91c80c18a70f70ac5f8b94fb9951baa608d268d /src/google/protobuf/compiler/java
parent320d56c833f835f40c56bdaf2a375768cdd1b334 (diff)
downloadprotobuf-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.cc6
-rw-r--r--src/google/protobuf/compiler/java/java_field.h2
-rw-r--r--src/google/protobuf/compiler/java/java_file.cc6
-rw-r--r--src/google/protobuf/compiler/java/java_file.h4
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_;