diff options
Diffstat (limited to 'src/vat2')
-rw-r--r-- | src/vat2/main.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/vat2/main.c b/src/vat2/main.c index b3606f3dd98..208e0c5d2c2 100644 --- a/src/vat2/main.c +++ b/src/vat2/main.c @@ -151,21 +151,36 @@ print_template (char *msgname) { uword *p = hash_get_mem (function_by_name, msgname); if (!p) - { - fprintf (stderr, "no such message: %s", msgname); - } + goto error; + cJSON *(*fp) (void *); fp = (void *) apifuncs[p[0]].tojson; - assert (fp); + if (!fp) + goto error; + void *scratch = malloc (2048); + if (!scratch) + goto error; + memset (scratch, 0, 2048); cJSON *t = fp (scratch); + if (!t) + goto error; free (scratch); char *output = cJSON_Print (t); + if (!output) + goto error; + cJSON_Delete (t); printf ("%s\n", output); free (output); + + return; + +error: + fprintf (stderr, "error printing template for: %s\n", msgname); } + static void dump_apis (void) { |