handle NULL text
This commit is contained in:
parent
07e2126e25
commit
3a7ae150b8
4 changed files with 20 additions and 6 deletions
|
|
@ -1070,9 +1070,21 @@ static void encode_member(capnp_ctx_t *ctx, struct str *func, struct field *f,
|
|||
break;
|
||||
case Type_text:
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "d->%s.str = s->%s;\n", var, var2);
|
||||
str_addf(func, "if (s->%s != NULL) {\n", var2);
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "d->%s.len = strlen(s->%s);\n", var, var2);
|
||||
str_addf(func, "\td->%s.str = s->%s;\n", var, var2);
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "\td->%s.len = strlen(s->%s);\n", var, var2);
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "}\n");
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "else{\n");
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "\td->%s.str = \"\";\n", var);
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "\td->%s.len = 0;\n", var);
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "}\n");
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "d->%s.seg = NULL;\n", var);
|
||||
break;
|
||||
|
|
@ -1081,8 +1093,8 @@ static void encode_member(capnp_ctx_t *ctx, struct str *func, struct field *f,
|
|||
|
||||
if (n != NULL) {
|
||||
str_add(func, tab, -1);
|
||||
str_addf(func, "encode_%s_ptr(cs, &(d->%s), s->%s);\n", n->name.str,
|
||||
var, var2);
|
||||
str_addf(func, "encode_%s_ptr(cs, &(d->%s), s->%s);\n", n->name.str, var,
|
||||
var2);
|
||||
}
|
||||
break;
|
||||
case Type__list:
|
||||
|
|
@ -1323,8 +1335,7 @@ void mk_struct_ptr_decoder(capnp_ctx_t *ctx, struct node *n) {
|
|||
"%s_ptr p) {\n",
|
||||
n->name.str, buf, n->name.str);
|
||||
str_addf(&(ctx->SRC), "\tstruct %s s;\n", n->name.str);
|
||||
str_addf(&(ctx->SRC), "\t*d = (%s *)calloc(1, sizeof(%s));\n",
|
||||
buf, buf);
|
||||
str_addf(&(ctx->SRC), "\t*d = (%s *)calloc(1, sizeof(%s));\n", buf, buf);
|
||||
str_addf(&(ctx->SRC), "\tread_%s(&s, p);\n", n->name.str);
|
||||
str_addf(&(ctx->SRC), "\tdecode_%s(*d, &s);\n", n->name.str);
|
||||
str_addf(&(ctx->SRC), "}\n");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue