fix token consumption so we dont get random data at the end
This commit is contained in:
@@ -203,6 +203,16 @@ parse_key_condition_expression :: proc(
|
|||||||
sk_condition = skc
|
sk_condition = skc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verify all tokens were consumed (no trailing garbage)
|
||||||
|
if trailing := tokenizer_next(&t); trailing != nil {
|
||||||
|
delete(pk_name)
|
||||||
|
attr_value_destroy(&pk_value)
|
||||||
|
if skc, has_skc := sk_condition.?; has_skc {
|
||||||
|
skc_copy := skc
|
||||||
|
sort_key_condition_destroy(&skc_copy)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
kc = Key_Condition{
|
kc = Key_Condition{
|
||||||
pk_name = pk_name,
|
pk_name = pk_name,
|
||||||
|
|||||||
@@ -184,7 +184,17 @@ parse_filter_expression :: proc(
|
|||||||
) -> (node: ^Filter_Node, ok: bool) {
|
) -> (node: ^Filter_Node, ok: bool) {
|
||||||
t := tokenizer_init(expression)
|
t := tokenizer_init(expression)
|
||||||
node, ok = parse_or_expr(&t, attribute_names, attribute_values)
|
node, ok = parse_or_expr(&t, attribute_names, attribute_values)
|
||||||
return
|
if !ok {
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify all tokens were consumed (no trailing garbage)
|
||||||
|
if trailing := tokenizer_next(&t); trailing != nil {
|
||||||
|
filter_node_destroy(node)
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
|
||||||
|
return node, true
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_or_expr :: proc(
|
parse_or_expr :: proc(
|
||||||
|
|||||||
Reference in New Issue
Block a user