Dont need an extra variable

This commit is contained in:
Kovid Goyal 2023-11-09 08:55:54 +05:30
parent 4c267bdc24
commit 75872a1097
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
2 changed files with 14 additions and 13 deletions

View file

@ -90,7 +90,7 @@ def cmd_for_report(report_name: str, keymap: KeymapType, type_map: Dict[str, Any
ans = [f'REPORT_VA_COMMAND("K s {{{fmt}}}", self->window_id, "{report_name}", ']
ans.append(',\n '.join((flag_attrs, uint_attrs, int_attrs)))
if payload_allowed:
ans.append(', "payload_sz", g.payload_sz, payload, g.payload_sz')
ans.append(', "payload_sz", g.payload_sz, parser_buf, g.payload_sz')
ans.append(');')
return '\n'.join(ans)
@ -113,20 +113,21 @@ def generate(
if payload_allowed:
payload_after_value = "case ';': state = PAYLOAD; break;"
payload = ', PAYLOAD'
parr = 'uint8_t *payload = parser_buf;'
payload_case = f'''
case PAYLOAD: {{
sz = parser_buf_pos - pos;
g.payload_sz = MAX(BUF_EXTRA, sz);
if (!base64_decode8(parser_buf + pos, sz, payload, &g.payload_sz)) {{
REPORT_ERROR("Failed to parse {command_class} command payload with error: payload size (%zu) too large", sz); return; }}
if (!base64_decode8(parser_buf + pos, sz, parser_buf, &g.payload_sz)) {{
g.payload_sz = MAX(BUF_EXTRA, sz);
REPORT_ERROR("Failed to parse {command_class} command payload with error: \
invalid base64 data in chunk of size: %zu with output buffer size: %zu", sz, g.payload_sz); return; }}
pos = parser_buf_pos;
}}
break;
'''
callback = f'{callback_name}(self->screen, &g, payload)'
callback = f'{callback_name}(self->screen, &g, parser_buf)'
else:
payload_after_value = payload = parr = payload_case = ''
payload_after_value = payload = payload_case = ''
callback = f'{callback_name}(self->screen, &g)'
return f'''
@ -142,7 +143,6 @@ static inline void
bool is_negative;
memset(&g, 0, sizeof(g));
size_t sz;
{parr}
{keys_enum}
enum KEYS key = '{initial_key}';
if (parser_buf[pos] == ';') state = AFTER_VALUE;

View file

@ -14,7 +14,6 @@ static inline void parse_graphics_code(PS *self, uint8_t *parser_buf,
bool is_negative;
memset(&g, 0, sizeof(g));
size_t sz;
uint8_t *payload = parser_buf;
enum KEYS {
action = 'a',
@ -321,10 +320,12 @@ static inline void parse_graphics_code(PS *self, uint8_t *parser_buf,
case PAYLOAD: {
sz = parser_buf_pos - pos;
g.payload_sz = MAX(BUF_EXTRA, sz);
if (!base64_decode8(parser_buf + pos, sz, payload, &g.payload_sz)) {
if (!base64_decode8(parser_buf + pos, sz, parser_buf, &g.payload_sz)) {
g.payload_sz = MAX(BUF_EXTRA, sz);
REPORT_ERROR("Failed to parse GraphicsCommand command payload with "
"error: payload size (%zu) too large",
sz);
"error: invalid base64 data in chunk of size: %zu with "
"output buffer size: %zu",
sz, g.payload_sz);
return;
}
pos = parser_buf_pos;
@ -372,7 +373,7 @@ static inline void parse_graphics_code(PS *self, uint8_t *parser_buf,
"parent_placement_id", (unsigned int)g.parent_placement_id, "z_index",
(int)g.z_index, "offset_from_parent_x", (int)g.offset_from_parent_x,
"offset_from_parent_y", (int)g.offset_from_parent_y, "payload_sz",
g.payload_sz, payload, g.payload_sz);
g.payload_sz, parser_buf, g.payload_sz);
screen_handle_graphics_command(self->screen, &g, payload);
screen_handle_graphics_command(self->screen, &g, parser_buf);
}