Print this page
11506 smatch resync
*** 163,173 ****
}
struct expression *gen_expression_from_key(struct expression *arg, const char *key)
{
struct expression *ret;
! struct token *token, *end;
const char *p = key;
char buf[4095];
char *alloc;
size_t len;
--- 163,173 ----
}
struct expression *gen_expression_from_key(struct expression *arg, const char *key)
{
struct expression *ret;
! struct token *token, *prev, *end;
const char *p = key;
char buf[4095];
char *alloc;
size_t len;
*** 187,202 ****
return NULL;
token = token->next;
ret = arg;
while (token_type(token) == TOKEN_SPECIAL &&
! token->special == SPECIAL_DEREFERENCE) {
token = token->next;
if (token_type(token) != TOKEN_IDENT)
return NULL;
ret = deref_expression(ret);
! ret = member_expression(ret, '*', token->ident);
token = token->next;
}
if (token_type(token) != TOKEN_STREAMEND)
return NULL;
--- 187,205 ----
return NULL;
token = token->next;
ret = arg;
while (token_type(token) == TOKEN_SPECIAL &&
! (token->special == SPECIAL_DEREFERENCE || token->special == '.')) {
! prev = token;
token = token->next;
if (token_type(token) != TOKEN_IDENT)
return NULL;
ret = deref_expression(ret);
! ret = member_expression(ret,
! (prev->special == SPECIAL_DEREFERENCE) ? '*' : '.',
! token->ident);
token = token->next;
}
if (token_type(token) != TOKEN_STREAMEND)
return NULL;