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;