tools/generate-wire.py: fix loop logic for towire_xxx_array

We have to handle singletons which are arrays of variable-length entries:
this needs to be a ptr-to-ptr.

```C
struct blinded_payinfo {
        u32 fee_base_msat;
        u32 fee_proportional_millionths;
        u16 cltv_expiry_delta;
        u8 *features;
};
```

Before:
```C
struct tlv_invoice_tlvs {
...
	struct blinded_payinfo *blindedpay;
```

After:
```C
struct tlv_invoice_tlvs {
...
	struct blinded_payinfo **blindedpay;
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2020-08-25 12:56:13 +09:30
parent 897c53ce1c
commit aa441e3b27
1 changed files with 5 additions and 0 deletions

View File

@ -69,7 +69,12 @@ struct ${tlv.struct_name()} {
* tlv_field entries above to save on memory. */
% for msg in tlv.messages.values():
% if msg.singleton():
## Array of variable-length elems needs ptr-to-ptr!
% if msg.singleton().is_varlen() and msg.singleton().type_obj.is_varsize():
${msg.singleton().type_obj.type_name()} **${msg.name};
% else:
${msg.singleton().type_obj.type_name()} *${msg.name};
% endif
% else:
struct ${msg.struct_name()} *${msg.name};
% endif