From 1019f76fc550bebafed0cfb65e6a04b9ff945185 Mon Sep 17 00:00:00 2001 From: Josh Haberman Date: Thu, 14 Apr 2016 10:40:11 -0700 Subject: Added migration flag for users using old JSON format. --- upb/json/printer.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'upb/json/printer.c') 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; -- cgit v1.2.3