mirror of
https://github.com/linux-msm/qmic.git
synced 2024-11-23 09:44:06 +08:00
parser: reset fixed flag each for each array
If a message contains an array, we need to reset the flag that indicates whether it is a fixed array or not each time through the loop parsing message members. Otherwise a non-fixed array declared after a fixed array will be marked as fixed. Drop the "int" in the definition of the array_size local varaible in qmi_message_parse() to be consistent with the rest of the program. Signed-off-by: Alex Elder <elder@linaro.org> Message-Id: <20211001232338.769309-22-elder@linaro.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
parent
69f032f380
commit
26191dc4a9
9
parser.c
9
parser.c
@ -325,8 +325,8 @@ static void qmi_message_parse(enum message_type message_type)
|
||||
struct token type_tok;
|
||||
struct token num_tok;
|
||||
struct token id_tok;
|
||||
unsigned int array_size;
|
||||
bool array_fixed = false;
|
||||
unsigned array_size;
|
||||
bool array_fixed;
|
||||
bool required;
|
||||
|
||||
token_expect(TOK_ID, &msg_id_tok);
|
||||
@ -352,14 +352,15 @@ static void qmi_message_parse(enum message_type message_type)
|
||||
token_expect(TOK_NUM, &num_tok);
|
||||
array_size = num_tok.num;
|
||||
token_expect(']', NULL);
|
||||
|
||||
array_fixed = true;
|
||||
} else if(token_accept('(', NULL)) {
|
||||
} else if (token_accept('(', NULL)) {
|
||||
token_expect(TOK_NUM, &num_tok);
|
||||
array_size = num_tok.num;
|
||||
token_expect(')', NULL);
|
||||
array_fixed = false;
|
||||
} else {
|
||||
array_size = 0;
|
||||
array_fixed = false;
|
||||
}
|
||||
|
||||
token_expect('=', NULL);
|
||||
|
17
tests/fixed.qmi
Normal file
17
tests/fixed.qmi
Normal file
@ -0,0 +1,17 @@
|
||||
package test;
|
||||
|
||||
struct qmi_result {
|
||||
u16 result;
|
||||
u16 error;
|
||||
};
|
||||
|
||||
request test_request {
|
||||
optional u8 variable(5) = 0x1;
|
||||
optional u16 fixed[5] = 0x2;
|
||||
# The next field should have array_type VAR_LEN_ARRAY
|
||||
optional u32 not_fixed(5) = 0x3;
|
||||
} = 0x23;
|
||||
|
||||
response test_response {
|
||||
required qmi_result r = 2;
|
||||
} = 043;
|
Loading…
Reference in New Issue
Block a user