summaryrefslogtreecommitdiff
path: root/upb/json/printer.c
diff options
context:
space:
mode:
Diffstat (limited to 'upb/json/printer.c')
-rw-r--r--upb/json/printer.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/upb/json/printer.c b/upb/json/printer.c
index c290efe..e6135bb 100644
--- a/upb/json/printer.c
+++ b/upb/json/printer.c
@@ -47,12 +47,19 @@ void freestrpc(void *ptr) {
strpc *newstrpc(upb_handlers *h, const upb_fielddef *f) {
/* TODO(haberman): handle malloc failure. */
strpc *ret = malloc(sizeof(*ret));
- size_t len;
- ret->len = upb_fielddef_getjsonname(f, NULL, 0);
- ret->ptr = malloc(ret->len);
- len = upb_fielddef_getjsonname(f, ret->ptr, ret->len);
- UPB_ASSERT_VAR(len, len == ret->len);
- ret->len--; /* NULL */
+ if (getenv("UPB_JSON_WRITE_LEGACY_FIELD_NAMES")) {
+ /* Temporary code to help people migrate if they were depending on the
+ * old, non-proto3-json-compliant field names. */
+ ret->ptr = upb_strdup(upb_fielddef_name(f));
+ ret->len = strlen(ret->ptr);
+ } else {
+ size_t len;
+ ret->len = upb_fielddef_getjsonname(f, NULL, 0);
+ ret->ptr = malloc(ret->len);
+ len = upb_fielddef_getjsonname(f, ret->ptr, ret->len);
+ UPB_ASSERT_VAR(len, len == ret->len);
+ ret->len--; /* NULL */
+ }
upb_handlers_addcleanup(h, ret, freestrpc);
return ret;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback