You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
When arrayLimit is exceeded and mixed array notation is used, result depends on the limit value #546
This is something that I found in #540 (comment), but was not fixed by #545 (fbc5206). Given a string with mixed array notation a[]=b&a[1]=c&a=d and arrayLimit values -1, 0 and 1 (the limit is always exceeded), qs.parse() returns 3 different results:
input
arrayLimit
result
a[]=b&a[1]=c&a=d
-1
{ a: { '0': 'b', '1': 'd' } }
a[]=b&a[1]=c&a=d
0
{ a: { '0': 'b', '1': 'c', d: true } }
a[]=b&a[1]=c&a=d
1
{ a: { '0': 'b', '1': 'c', '2': 'd' } }
This has something to do with the order in which everything is combined and when exactly is the overflow detected. When trying to debug it previously, I found out that there is a case, when object is not marked as an overflow object when the overflow is detected:
Activity
[Fix] `parse`: mark overflow objects for indexed notation exceeding `…
[Fix] `parse`: consistent array overflow handling regardless of array…