Index: third_party/protobuf/objectivec/GPBUtilities_PackagePrivate.h |
diff --git a/third_party/protobuf/objectivec/GPBUtilities_PackagePrivate.h b/third_party/protobuf/objectivec/GPBUtilities_PackagePrivate.h |
index a6b6c84d988064c5e8f1d90ab7240a75c1df63df..274351b71292a294415483021d7ecbd32f7ded6e 100644 |
--- a/third_party/protobuf/objectivec/GPBUtilities_PackagePrivate.h |
+++ b/third_party/protobuf/objectivec/GPBUtilities_PackagePrivate.h |
@@ -50,9 +50,20 @@ CF_EXTERN_C_BEGIN |
// These two are used to inject a runtime check for version mismatch into the |
// generated sources to make sure they are linked with a supporting runtime. |
+void GPBCheckRuntimeVersionSupport(int32_t objcRuntimeVersion); |
+GPB_INLINE void GPB_DEBUG_CHECK_RUNTIME_VERSIONS() { |
+ // NOTE: By being inline here, this captures the value from the library's |
+ // headers at the time the generated code was compiled. |
+#if defined(DEBUG) && DEBUG |
+ GPBCheckRuntimeVersionSupport(GOOGLE_PROTOBUF_OBJC_VERSION); |
+#endif |
+} |
+ |
+// Legacy version of the checks, remove when GOOGLE_PROTOBUF_OBJC_GEN_VERSION |
+// goes away (see more info in GPBBootstrap.h). |
void GPBCheckRuntimeVersionInternal(int32_t version); |
GPB_INLINE void GPBDebugCheckRuntimeVersion() { |
-#if DEBUG |
+#if defined(DEBUG) && DEBUG |
GPBCheckRuntimeVersionInternal(GOOGLE_PROTOBUF_OBJC_GEN_VERSION); |
#endif |
} |
@@ -96,7 +107,7 @@ GPB_INLINE int64_t GPBLogicalRightShift64(int64_t value, int32_t spaces) { |
// negative values must be sign-extended to 64 bits to be varint encoded, |
// thus always taking 10 bytes on the wire.) |
GPB_INLINE int32_t GPBDecodeZigZag32(uint32_t n) { |
- return GPBLogicalRightShift32(n, 1) ^ -(n & 1); |
+ return (int32_t)(GPBLogicalRightShift32((int32_t)n, 1) ^ -((int32_t)(n) & 1)); |
} |
// Decode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers |
@@ -104,7 +115,7 @@ GPB_INLINE int32_t GPBDecodeZigZag32(uint32_t n) { |
// negative values must be sign-extended to 64 bits to be varint encoded, |
// thus always taking 10 bytes on the wire.) |
GPB_INLINE int64_t GPBDecodeZigZag64(uint64_t n) { |
- return GPBLogicalRightShift64(n, 1) ^ -(n & 1); |
+ return (int64_t)(GPBLogicalRightShift64((int64_t)n, 1) ^ -((int64_t)(n) & 1)); |
} |
// Encode a ZigZag-encoded 32-bit value. ZigZag encodes signed integers |
@@ -113,7 +124,7 @@ GPB_INLINE int64_t GPBDecodeZigZag64(uint64_t n) { |
// thus always taking 10 bytes on the wire.) |
GPB_INLINE uint32_t GPBEncodeZigZag32(int32_t n) { |
// Note: the right-shift must be arithmetic |
- return (n << 1) ^ (n >> 31); |
+ return (uint32_t)((n << 1) ^ (n >> 31)); |
} |
// Encode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers |
@@ -122,9 +133,13 @@ GPB_INLINE uint32_t GPBEncodeZigZag32(int32_t n) { |
// thus always taking 10 bytes on the wire.) |
GPB_INLINE uint64_t GPBEncodeZigZag64(int64_t n) { |
// Note: the right-shift must be arithmetic |
- return (n << 1) ^ (n >> 63); |
+ return (uint64_t)((n << 1) ^ (n >> 63)); |
} |
+#pragma clang diagnostic push |
+#pragma clang diagnostic ignored "-Wswitch-enum" |
+#pragma clang diagnostic ignored "-Wdirect-ivar-access" |
+ |
GPB_INLINE BOOL GPBDataTypeIsObject(GPBDataType type) { |
switch (type) { |
case GPBDataTypeBytes: |
@@ -187,6 +202,8 @@ GPB_INLINE void GPBSetHasIvarField(GPBMessage *self, GPBFieldDescriptor *field, |
void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, |
int32_t oneofHasIndex, uint32_t fieldNumberNotToClear); |
+#pragma clang diagnostic pop |
+ |
//%PDDM-DEFINE GPB_IVAR_SET_DECL(NAME, TYPE) |
//%void GPBSet##NAME##IvarWithFieldInternal(GPBMessage *self, |
//% NAME$S GPBFieldDescriptor *field, |