aboutsummaryrefslogtreecommitdiffhomepage
path: root/js/message.js
diff options
context:
space:
mode:
authorGravatar Adam Cozzette <acozzette@google.com>2017-03-06 15:12:19 -0800
committerGravatar Adam Cozzette <acozzette@google.com>2017-03-06 15:37:40 -0800
commit651ba62ab5a9c35e157380e2fd89cf77febb47b9 (patch)
tree2aa83e2d2ac475a1b74132b9a07a82dba67f752e /js/message.js
parent008ff033ef3308512c1da2b7cdadf50a6296251a (diff)
JS: ensure that extension values are serialized even if they're falsy
There was a bug where for JavaScript we would only serialize an extension value if it evaluated as truthy, which meant that values like 0 would get silently dropped (even in proto2, where field presence is significant). This fixes issue #2605, and takes care of the output of toObject() in addition to the binary format.
Diffstat (limited to 'js/message.js')
-rw-r--r--js/message.js4
1 files changed, 2 insertions, 2 deletions
diff --git a/js/message.js b/js/message.js
index 05d34e9d..4e2517d3 100644
--- a/js/message.js
+++ b/js/message.js
@@ -497,7 +497,7 @@ jspb.Message.toObjectExtension = function(proto, obj, extensions,
for (var fieldNumber in extensions) {
var fieldInfo = extensions[fieldNumber];
var value = getExtensionFn.call(proto, fieldInfo);
- if (value) {
+ if (goog.isDefAndNotNull(value)) {
for (var name in fieldInfo.fieldName) {
if (fieldInfo.fieldName.hasOwnProperty(name)) {
break; // the compiled field name
@@ -541,7 +541,7 @@ jspb.Message.serializeBinaryExtensions = function(proto, writer, extensions,
'without binary serialization support');
}
var value = getExtensionFn.call(proto, fieldInfo);
- if (value) {
+ if (goog.isDefAndNotNull(value)) {
if (fieldInfo.isMessageType()) {
// If the message type of the extension was generated without binary
// support, there may not be a binary message serializer function, and