Commit f9c5978f authored by kenton@google.com's avatar kenton@google.com

Hopefully fix build on Sun Studio.

parent c0ee4d2e
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#ifndef _WIN32 #ifndef _WIN32
#include <errno.h> #include <errno.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <signal.h>
#endif #endif
#include <algorithm> #include <algorithm>
......
...@@ -138,9 +138,9 @@ void ExtensionSet::RegisterEnumExtension(const MessageLite* containing_type, ...@@ -138,9 +138,9 @@ void ExtensionSet::RegisterEnumExtension(const MessageLite* containing_type,
EnumValidityFunc* is_valid) { EnumValidityFunc* is_valid) {
GOOGLE_CHECK_EQ(type, WireFormatLite::TYPE_ENUM); GOOGLE_CHECK_EQ(type, WireFormatLite::TYPE_ENUM);
ExtensionInfo info(type, is_repeated, is_packed); ExtensionInfo info(type, is_repeated, is_packed);
info.enum_is_valid = CallNoArgValidityFunc; info.enum_validity_check.func = CallNoArgValidityFunc;
// See comment in CallNoArgValidityFunc() about why we use a c-style cast. // See comment in CallNoArgValidityFunc() about why we use a c-style cast.
info.enum_is_valid_arg = (void*)is_valid; info.enum_validity_check.arg = (void*)is_valid;
Register(containing_type, number, info); Register(containing_type, number, info);
} }
...@@ -761,7 +761,8 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, ...@@ -761,7 +761,8 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
int value; int value;
if (!WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>( if (!WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>(
input, &value)) return false; input, &value)) return false;
if (extension.enum_is_valid(extension.enum_is_valid_arg, value)) { if (extension.enum_validity_check.func(
extension.enum_validity_check.arg, value)) {
AddEnum(number, WireFormatLite::TYPE_ENUM, true, value, AddEnum(number, WireFormatLite::TYPE_ENUM, true, value,
extension.descriptor); extension.descriptor);
} }
...@@ -814,7 +815,8 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, ...@@ -814,7 +815,8 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
if (!WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>( if (!WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>(
input, &value)) return false; input, &value)) return false;
if (!extension.enum_is_valid(extension.enum_is_valid_arg, value)) { if (!extension.enum_validity_check.func(
extension.enum_validity_check.arg, value)) {
// Invalid value. Treat as unknown. // Invalid value. Treat as unknown.
field_skipper->SkipUnknownEnum(number, value); field_skipper->SkipUnknownEnum(number, value);
} else if (extension.is_repeated) { } else if (extension.is_repeated) {
......
...@@ -99,9 +99,9 @@ struct ExtensionInfo { ...@@ -99,9 +99,9 @@ struct ExtensionInfo {
union { union {
struct { struct {
EnumValidityFuncWithArg* enum_is_valid; EnumValidityFuncWithArg* func;
const void* enum_is_valid_arg; const void* arg;
}; } enum_validity_check;
const MessageLite* message_prototype; const MessageLite* message_prototype;
}; };
......
...@@ -175,8 +175,8 @@ bool DescriptorPoolExtensionFinder::Find(int number, ExtensionInfo* output) { ...@@ -175,8 +175,8 @@ bool DescriptorPoolExtensionFinder::Find(int number, ExtensionInfo* output) {
<< "Extension factory's GetPrototype() returned NULL for extension: " << "Extension factory's GetPrototype() returned NULL for extension: "
<< extension->full_name(); << extension->full_name();
} else if (extension->cpp_type() == FieldDescriptor::CPPTYPE_ENUM) { } else if (extension->cpp_type() == FieldDescriptor::CPPTYPE_ENUM) {
output->enum_is_valid = ValidateEnumUsingDescriptor; output->enum_validity_check.func = ValidateEnumUsingDescriptor;
output->enum_is_valid_arg = extension->enum_type(); output->enum_validity_check.arg = extension->enum_type();
} }
return true; return true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment