@@ -113,10 +113,20 @@ pub const Host = struct {
113
113
}
114
114
< % } -% >
115
115
< % } else if (p .type === ' buffer' ) { % >
116
- const dest_ <%- p .name %> = try std .heap .wasm_allocator .alloc (u8, try b64dec .calcSizeForSlice (self .< %- p .name % > ));
117
- try b64dec .decode (dest_< %- p .name % > , self .< %- p .name % > );
118
- self .< %- p .name % > = dest_< %- p .name % > ;
119
- < % } % >
116
+ < % if (isZigOptional (schema, p)) { % >
117
+ if (self .aBuffer != null ) {
118
+ < % } /* end isZigOptional */ -% >
119
+
120
+ const srcBuf = self .< %- p .name % >< %- isZigOptional (schema, p) ? ' .?' : null % > ;
121
+ const dest_ <%- p .name %> = try std .heap .wasm_allocator .alloc (u8, try b64dec .calcSizeForSlice (srcBuf));
122
+ try b64dec .decode (dest_< %- p .name % > , srcBuf);
123
+ self .< %- p .name % > = dest_< %- p .name % > ;
124
+
125
+ < % if (isZigOptional (schema, p)) { % >
126
+ }
127
+ < % } /* end isZigOptional */ -% >
128
+
129
+ < % } /* end buffer */ % >
120
130
< % }) % >
121
131
122
132
return self ;
@@ -137,8 +147,15 @@ pub const Host = struct {
137
147
}
138
148
< % } -% >
139
149
< % } else if (p .type === ' buffer' ) { % >
140
- const dest_ <%- p .name %> = try std .heap .wasm_allocator .alloc (u8, b64enc .calcSize (self .< %- p .name % > .len ));
141
- self .< %- p .name % > = b64enc .encode (dest_< %- p .name % > , self .< %- p .name % > );
150
+ < % if (isZigOptional (schema, p)) { % >
151
+ if (self .< %- p .name % > != null ) {
152
+ < % } -% >
153
+ const srcBuf = self .< %- p .name % >< %- isZigOptional (schema, p) ? ' .?' : null % > ;
154
+ const dest_ <%- p .name %> = try std .heap .wasm_allocator .alloc (u8, b64enc .calcSize (srcBuf .len ));
155
+ self .< %- p .name % > = b64enc .encode (dest_< %- p .name % > , srcBuf);
156
+ < % if (isZigOptional (schema, p)) { % >
157
+ }
158
+ < % } /* end isZigOptional */ -% >
142
159
< % } % >
143
160
< % }) % >
144
161
0 commit comments