Merge "Emit macros with proper parentheses."
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc
index 3a9d263..f91a1a6 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message.cc
@@ -1575,7 +1575,7 @@
       "#define ZR_(first, last) do {                              \\\n"
       "    size_t f = OFFSET_OF_FIELD_(first);                    \\\n"
       "    size_t n = OFFSET_OF_FIELD_(last) - f + sizeof(last);  \\\n"
-      "    ::memset(&first, 0, n);                                \\\n"
+      "    ::memset(&(first), 0, n);                              \\\n"
       "  } while (0)\n\n";
   for (int i = 0; i < runs_of_fields_.size(); i++) {
     const vector<string>& run = runs_of_fields_[i];
diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc
index 242e3c0..0bed03e 100644
--- a/src/google/protobuf/descriptor.pb.cc
+++ b/src/google/protobuf/descriptor.pb.cc
@@ -1755,7 +1755,7 @@
 #define ZR_(first, last) do {                              \
     size_t f = OFFSET_OF_FIELD_(first);                    \
     size_t n = OFFSET_OF_FIELD_(last) - f + sizeof(last);  \
-    ::memset(&first, 0, n);                                \
+    ::memset(&(first), 0, n);                              \
   } while (0)
 
   ZR_(start_, end_);
@@ -4979,7 +4979,7 @@
 #define ZR_(first, last) do {                              \
     size_t f = OFFSET_OF_FIELD_(first);                    \
     size_t n = OFFSET_OF_FIELD_(last) - f + sizeof(last);  \
-    ::memset(&first, 0, n);                                \
+    ::memset(&(first), 0, n);                              \
   } while (0)
 
   if (_has_bits_[0 / 32] & 255) {
@@ -5726,7 +5726,7 @@
 #define ZR_(first, last) do {                              \
     size_t f = OFFSET_OF_FIELD_(first);                    \
     size_t n = OFFSET_OF_FIELD_(last) - f + sizeof(last);  \
-    ::memset(&first, 0, n);                                \
+    ::memset(&(first), 0, n);                              \
   } while (0)
 
   ZR_(message_set_wire_format_, deprecated_);
@@ -6124,7 +6124,7 @@
 #define ZR_(first, last) do {                              \
     size_t f = OFFSET_OF_FIELD_(first);                    \
     size_t n = OFFSET_OF_FIELD_(last) - f + sizeof(last);  \
-    ::memset(&first, 0, n);                                \
+    ::memset(&(first), 0, n);                              \
   } while (0)
 
   if (_has_bits_[0 / 32] & 63) {
@@ -6619,7 +6619,7 @@
 #define ZR_(first, last) do {                              \
     size_t f = OFFSET_OF_FIELD_(first);                    \
     size_t n = OFFSET_OF_FIELD_(last) - f + sizeof(last);  \
-    ::memset(&first, 0, n);                                \
+    ::memset(&(first), 0, n);                              \
   } while (0)
 
   ZR_(allow_alias_, deprecated_);
@@ -8085,7 +8085,7 @@
 #define ZR_(first, last) do {                              \
     size_t f = OFFSET_OF_FIELD_(first);                    \
     size_t n = OFFSET_OF_FIELD_(last) - f + sizeof(last);  \
-    ::memset(&first, 0, n);                                \
+    ::memset(&(first), 0, n);                              \
   } while (0)
 
   if (_has_bits_[0 / 32] & 126) {